已关闭。此问题为opinion-based。当前不接受答案。
**想要改进此问题吗?**请更新此问题,以便editing this post可以用事实和引文来回答。
5天前关闭。
Improve this question
我试图编写一个相对简单的程序,以了解在哪些情况下使用堆会更有效和有用。
1.我第一次读到最好在堆上存储大对象,于是我在堆上创建了一个std::vector
,并填充了大量的字节,大约18GB。在某个时候,它抛出了一个std::bad_alloc
异常,然后我的操作系统(Linux mint)在交换空间满了之后终止了进程,但是结果和堆栈是一样的,所以我不明白为什么在堆上更好。
1.也许我缺乏创造力,但我想不出一个设计,我会绝对需要使用堆,我总是可以传递我的对象在堆栈上的引用,并达到相同的内存使用效率。对于我写的每一个程序,它总是更有效地使用堆栈速度明智,内存使用是相同的。
那么,在什么情况下使用堆对于内存使用效率或速度是有用的呢?
1条答案
按热度按时间66bbxpm51#
当你需要比堆栈提供的更大的灵活性时,你可以使用堆。如果你需要分配内存来从一个函数返回一些东西,那么它不能在堆栈上,因为当函数返回时它会被释放。它不能是全局的,因为你可能会多次调用同一个函数。
在C++中,你可能并不总是意识到你在使用堆,因为像
std::vector
和std::string
这样的类在内部使用堆,你并不总是需要自己写new
来使用堆。