Анализировать выделение памяти в виде кучи или стека для реализации циклического буфера

Я пытаюсь понять распределение памяти при использовании сторонней написанной реализации Ring Buffer.

Я ссылался на две свободно доступные реализации кольцевого буфера:

  1. https://github.com/fbergama/MTCircularBuffer
  2. https://github.com/wizard97/Embedded_RingBuf_CPP

Я пытался скомпилировать доступные тестовые программы в вышеуказанных библиотеках на 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);

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