0

我尝试使用 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

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

4

1 回答 1

2

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

于 2017-01-25T04:57:56.887 回答