C++:使用堆内存的用例/真实的应用[已关闭]

sz81bmfz  于 2022-12-15  发布在  其他
关注(0)|答案(1)|浏览(169)

已关闭。此问题为opinion-based。当前不接受答案。
**想要改进此问题吗?**请更新此问题,以便editing this post可以用事实和引文来回答。

5天前关闭。
Improve this question
我试图编写一个相对简单的程序,以了解在哪些情况下使用堆会更有效和有用。
1.我第一次读到最好在堆上存储大对象,于是我在堆上创建了一个std::vector,并填充了大量的字节,大约18GB。在某个时候,它抛出了一个std::bad_alloc异常,然后我的操作系统(Linux mint)在交换空间满了之后终止了进程,但是结果和堆栈是一样的,所以我不明白为什么在堆上更好。
1.也许我缺乏创造力,但我想不出一个设计,我会绝对需要使用堆,我总是可以传递我的对象在堆栈上的引用,并达到相同的内存使用效率。对于我写的每一个程序,它总是更有效地使用堆栈速度明智,内存使用是相同的。
那么,在什么情况下使用堆对于内存使用效率或速度是有用的呢?

66bbxpm5

66bbxpm51#

当你需要比堆栈提供的更大的灵活性时,你可以使用堆。如果你需要分配内存来从一个函数返回一些东西,那么它不能在堆栈上,因为当函数返回时它会被释放。它不能是全局的,因为你可能会多次调用同一个函数。
在C++中,你可能并不总是意识到你在使用堆,因为像std::vectorstd::string这样的类在内部使用堆,你并不总是需要自己写new来使用堆。

相关问题