如何使用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不为空,可以从中分配内存。
我尝试使用 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不为空,可以从中分配内存。