我们可以使用定位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
,它是一个连续存储的动态数组。 - GManNickG