如何使用boost::simple_segregated_storage?

How to use boost::simple_segregated_storage?

我尝试使用 boost::simple_segregated_storage,但我不明白如何正确使用它。没有任何样品。我用下一种方式使用它:

boost::simple_segregated_storage<int> pStorage;

const int num_partitions = 100;
const int partition_sz = sizeof(int);
const int block_sz = partition_sz * num_partitions;
int block[block_sz] = {};

pStorage.segregate(block, block_sz, partition_sz);

int* pInt = (int*)pStorage.malloc(); // <-- Crashes here

但是我收到了崩溃。我做错了什么,哪里错了? 如何正确使用?

你应该使用 pStorage.add_block(block, block_sz, partition_sz); 而不是 segregate(),因为 segregate() 只是为了将块分成块(我假设你知道块和块的概念,如果不知道,here 是一个例子)。 add_block() 分离 block 并将其空闲列表合并到 pStorage 的空闲列表中。 add_block()后,pStorage不为空,可以从中分配内存。