Как использовать 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

Но я получил крах. Что я делаю не так и где ошибка? Как правильно его использовать?

2 ответа

Решение

Вы должны использовать pStorage.add_block(block, block_sz, partition_sz); вместо segregate(), как segregate() просто для разделения блоков на куски (я полагаю, вы знаете концепцию блоков и кусков, если нет, то вот иллюстрация). add_block() сегрегируется block и объединить свой свободный список в pStorageсвободный список. После add_block()pStorage не пуст, и вы можете выделить из него память.

Разве это не должно быть «int block[num_partitions]», поскольку это массив «int»

Другие вопросы по тегам