C++:"新"这个将继续增长的系列意味着什么?

jbu*_*jbu 0 c++ heap allocation new-operator

我是C++的新手.对于"新"系列来说,它究竟意味着什么?例如:

UnicodeStringList* tmp = new UnicodeStringList;
// where UnicodeStringList is typedef to std::list<UnicodeString>
Run Code Online (Sandbox Code Playgroud)

当你"新"某事时,你必须知道你需要它有多大,对吧?因此,当我使用赋值构造函数来复制对象时,计算机将如何知道应该在堆上分配多少内存?例如:

*tmp = another_string_list;
Run Code Online (Sandbox Code Playgroud)

另一个sun_string_list被复制到堆内存中新的UnicodeStringList中,但我最初从未指定堆内存应该有多大.并且编译器不知道another_string_list有多大,所以有多少内存进入堆?

我很困惑,希望我已经说明了我的问题,所以有人可能会理解我,但我不确定.

请帮忙

谢谢,

朱利安

Mic*_*zek 5

std::list向元素添加元素时,a的大小不会改变.我将使用a,std::vector因为示例更简单,但同样的概念适用:a std::vector包含指向数组的指针,根据需要动态调整大小以包含元素.指向数组的指针的大小不会改变(它是一个指针的大小),即使它指向的数组发生了变化

  • `std :: list`是一个双链表.`std :: vector`更适合你的例子. (3认同)