使用栈代替堆有什么问题吗?
基本上,我想要内存中大约 200 个位置(或者更多,1000 个,谁知道,这只是假设),我可以使用数组在堆栈中分配它,或者使用 malloc()
在堆上分配它。 。在堆上我必须记住永远free()
内存...但是使用堆栈,一旦函数返回,所有内存都会被很好地清理干净。
我只是想知道在堆栈上保存大量内存是否存在任何问题。据我所知,堆栈和堆基本上是相同的,只是它们位于 RAM 框架的相对两侧,并且它们向另一侧增长,如下图所示。
最佳答案
首先 - 堆和栈不是c++
术语。它们是实现细节。
使用堆栈和堆的实现(可能是大多数(如果不是全部))通常具有堆栈大小的上限。因此,将巨大的变量放在堆栈上可能会导致堆栈溢出(这通常会导致不可预测的错误)。
但是,堆栈比堆有优势,因此只要可以就使用它 - 前提是您不将巨大的变量放在堆栈上。
注意 - 大多数 C++ 容器,例如 vector 、列表、双端队列可以毫无问题地放置在堆栈上,因为它们只在堆栈上放置几个字节并在堆上分配真正的数据容器。
关于c++ - 使用栈和堆的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35444188/