为什么堆内存存在?

Why Heap memory exist?

我正在阅读有关堆栈和堆内存的内容,堆栈内存如何存储自动变量,而堆用于在指针的帮助下动态分配内存,但是。我对为什么甚至堆内存存在,为什么不存在,整个内存仅由代码段和堆栈组成,我有一个小小的困惑,我知道这是一个奇怪的问题,但如果是这样的话,也会少很多错误,也没有内存泄漏的概念。可以,有人给这个问题一个正当的理由。

堆允许对象具有不确定持续时间的生命周期,并允许分配不确定大小。那是编译时无法确定的生命周期或大小。

例如,假设您正在使用文字处理器。在编译程序时,您不知道任何特定文件将变得有多大或多小,也不知道用户要打开该文件多长时间。将与打开文件相关的对象放在堆上可以让您轻松解决这两个问题。

如果没有堆,您将只能在编译时简单地指定最大大小并希望它足够并希望最终进入 运行 程序的机器有足够的内存来支持最大文件大小。