我是C ++的新手。 “新”集合到底意味着什么?例如:

UnicodeStringList* tmp = new UnicodeStringList;
// where UnicodeStringList is typedef to std::list<UnicodeString>


当您“新”某件东西时,您必须确切地知道它需要多大,对吗?所以当我
 使用赋值构造函数复制对象,计算机将如何知道应在堆上分配多少内存?例如:

*tmp = another_string_list;


another_string_list被复制到堆内存中新的UnicodeStringList中,但是我最初从未指定堆内存应该有多大。而且编译器不知道another_string_list有多大,所以堆中有多少内存?

我很困惑,希望我已经详细说明了我的问题,以便有人可以理解我,但我不确定。

请帮忙

谢谢,

朱利安

最佳答案

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

08-16 07:22