我正在尝试使用第三方编写的环形缓冲区实现来了解内存分配。
我提到了两个免费的环形缓冲区实现:
我试图在Ubuntu 16.04 PC上的上述库中编译可用的测试程序。测试程序可以编译,并且我可以成功使用它们。 但是,我想了解和理解的是,上述库中为环形缓冲区的元素分配的内存在哪里分配?是上面存储库中具有给定测试程序的堆栈还是堆?
答案 0 :(得分:0)
为上述库中的环形缓冲区元素分配的内存在哪里分配?是上面存储库中具有给定测试程序的堆栈还是堆?
如果您这样做
{
RingBufCPP<int, 10> rb1;
RingBufCPP<int, 10> * rb2 = new RingBufCPP<int, 10>;
...
}
rb1 在堆栈上, rb2 的值在堆栈上
您可以选择,因为如果知道大小,并且没有 new 可以在实现中分配缓冲区,则可以选择
但是在MTCircularBuffer( size_t size )
中有一个 new ,无论您做什么MTCircularBuffer<int> rb1(10);
或new MTCircularBuffer<int>(10);