C++:struct 和 new 关键字

标签 c++ memory-management struct new-operator

我是 C++ 的初学者,我有以下代码:

struct Airline {
    string Name;
    int diameter;
    int weight;
};

Airline* myPlane = new Airline;

我的问题是,如果我没记错的话,当我调用 new 方法时,它会分配内存。 PC 如何知道要分配多少内存,特别是考虑到其中有一个字符串类型?

谢谢

最佳答案

std::string 对象是固定大小的;它包含一个指向实际字符缓冲区的指针及其长度。 std::string 的定义看起来像

class string
{
    char *buffer;
    size_t nchars;

  public:
    // interface
};

因此您的 Airline 对象也具有固定大小。

现在,new 不仅分配;它还会初始化您的对象,包括 std::string,这意味着它可能会将 char 指针设置为 0,因为该字符串为空。

关于C++:struct 和 new 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9569604/

相关文章:

c++ - 为什么默认成员值禁止使用花括号列表初始化?

c - 初始化结构导致段错误

.net - 在处理阻塞过程时管理线程和内存使用情况

c - 什么时候复制填充字节 - 结构赋值,按值传递,其他?

c++ - 当我不知道 `std::unique_ptr<Base>(ptr)` 是如何分配的时, `ptr` 的销毁策略?

c++ - C++中可变参数构造函数的用途是什么?

python - Qt C++ - 如何成功地将数据传递给子进程?

c++ - 如何将 std::string 传递给 glShaderSource?

c++ - C++中的单例实例实现如何不泄漏内存?

c++ - 套接字内存泄漏