Анализировать выделение памяти в виде кучи или стека для реализации циклического буфера
Я пытаюсь понять распределение памяти при использовании сторонней написанной реализации Ring Buffer.
Я ссылался на две свободно доступные реализации кольцевого буфера:
Я пытался скомпилировать доступные тестовые программы в вышеуказанных библиотеках на Ubuntu 16.04 PC. Тестовые программы компилируются, и я могу успешно их использовать. Однако я хочу знать и понимать, где выделяется память, выделенная для элементов кольцевого буфера в вышеуказанных библиотеках? Это в стеке или куче с данными тестовыми программами в вышеупомянутых репозиториях?
1 ответ
где выделяется память, выделенная для элементов кольцевого буфера в вышеуказанных библиотеках? Это в стеке или куче с данными тестовыми программами в вышеупомянутых репозиториях?
если вы делаете
{
RingBufCPP<int, 10> rb1;
RingBufCPP<int, 10> * rb2 = new RingBufCPP<int, 10>;
...
}
rb1 в стеке и значение rb2 в куче
У вас есть выбор, потому что размер, если известен, и нет нового, чтобы выделить буфер в реализации
Но в MTCircularBuffer( size_t size )
есть новый, часть выделяется в куче, что бы вы ни делали MTCircularBuffer<int> rb1(10);
или же new MTCircularBuffer<int>(10);