【发布时间】:2012-01-08 05:15:27
【问题描述】:
我们可以使用placement new 在预分配的内存中创建一个对象。
让我们考虑以下示例:
char *buf = new char[1000]; //pre-allocated buffer
string *p = new (buf) MyObject(); //placement new
string *q = new (buf) MyObject(); //placement new
我在预分配的缓冲区中创建了两个对象。这两个对象是在缓冲区中随机创建的还是在连续的内存块中创建的?如果我们不断在缓冲区中创建更多对象并希望将它们存储在连续的内存块中,我们应该怎么做?先在缓冲区中创建一个数组,然后在数组的元素槽中创建每个对象?
【问题讨论】:
-
"如果我们不断在缓冲区中创建更多对象,并希望它们存储在连续的内存块中,我们应该怎么做?"使用
std::vector,它是一个连续存储的动态数组。
标签: c++ arrays memory-management