boost :: pool :: orders_free () не работает хорошо - PullRequest
0 голосов
/ 05 марта 2019

Я хотел бы использовать диспетчер памяти, и я попытался использовать boost::pool, как показано ниже, но ordered_free() не освобождает все элементы.

Пример ↓

#include <iostream>
#include <boost\pool\pool.hpp>
using namespace std;

int main()
{
    boost::pool<> p(sizeof(int));
    int* ptr_1= (int*)p.ordered_malloc(3);
    for (int i = 0; i < 3; i++)
    {
        ptr_1[i] = i;
    }
    p.ordered_free(ptr_1);

    int* ptr_2 = (int*)p.ordered_malloc(3);
    for (int i = 0; i < 3; i++)
    {
        ptr_2[i] = i;
    }

    p.ordered_free(ptr_2);
    return 0;
}

В этом случае p.ordered_free(ptr); удаляет только 5 байтов, а место памяти ptr_2 не совпадает с ptr_1.Есть ли способ удалить все элементы, используя boost::pool?

1 Ответ

0 голосов
/ 05 марта 2019

На основании документации Boost похоже, что ordered_free(ptr_1) просто удаляет один кусок памяти, но вы можете использовать ordered_free(ptr_1, 3) для удаления всего массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...