我是 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/