【发布时间】:2013-11-13 22:12:03
【问题描述】:
所讨论的语言是 C/C++。
我的教授说在您使用完堆后释放内存,否则您可能会得到无法访问的内存。这样做的问题是您最终可能会用完所有内存,并且您无法访问其中的任何内容。
为什么相同的概念不适用于堆栈?我知道你总是可以访问你在堆栈上使用的内存,但是如果你不断创建新变量,你最终会用完空间对吗?那么为什么不能像在堆上一样释放堆栈上的变量来为新变量腾出空间呢?
我知道编译器释放堆栈上的变量,但那是在变量范围的末尾。它不会在其作用域的末尾释放堆上的变量吗?如果没有,为什么不呢?
【问题讨论】:
-
C/C++ 不是一种语言。
-
编译器会为你做这些。
-
@dnk 是的,我明白了,但那是在变量范围的末尾。它不是也在其作用域的末尾释放堆上的变量吗?如果没有,为什么不呢?
-
@dfg:堆上没有变量这样的东西。您可以有多个指向堆上的内存块的指针。
标签: c++ c memory heap-memory stack-memory