Я пытаюсь использовать 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()
просто для разделения блоков на куски (я полагаю, вы знаете концепцию блоков и кусков, если нет, Вот это иллюстрация). add_block()
сегрегируется block
и объединить свой свободный список в pStorage
свободный список. После add_block()
pStorage не пуст, и вы можете выделить из него память.
Других решений пока нет …