Dan*_*Dan 10 c++ struct memory-management new-operator
我是C++的初学者,我有以下代码:
struct Airline {
string Name;
int diameter;
int weight;
};
Airline* myPlane = new Airline;
Run Code Online (Sandbox Code Playgroud)
我的问题是当我调用new它分配内存的方法时,如果我没记错的话.PC如何知道要分配多少内存,特别是考虑到那里有一个字符串类型?
谢谢
Fre*_*Foo 13
一个std::string目的是固定大小; 它包含一个指向字符实际缓冲区及其长度的指针.std::string的定义看起来像
class string
{
char *buffer;
size_t nchars;
public:
// interface
};
Run Code Online (Sandbox Code Playgroud)
因此,您的Airline对象也具有固定的大小.
现在,new不只是分配; 它还初始化你的对象,包括std::string,这意味着它可能设置char指针,0因为字符串是空的.