C++:struct和new关键字

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因为字符串是空的.