【发布时间】:2012-01-07 17:23:45
【问题描述】:
对象只能从堆栈顶部放置和删除。但是读取和写入它们的值呢?如果我错了,请纠正我,但我认为进程必须能够从堆栈的任何部分读取,因为如果只能从顶部读取,它就必须删除(并存储在某处)上面堆栈的全部内容它要检查的变量。但在这种情况下,进程如何知道堆栈中的某个特定变量的确切位置?我怀疑它只是保存了一个指向它的指针,但是该指针存储在哪里?
另一件事——阅读堆栈时,我经常会发现诸如“堆栈上分配的所有内存在编译时已知”之类的短语。好吧,我可能误解了这一点,所以请告诉我我的逻辑缺陷在哪里:
假设当if() 语句为真时创建了一个局部变量,而当它为假时则不是。是否正确将在运行时显示。因此在编译时无法知道是否应该创建它,因此我认为根本不会为其分配内存,因为这会很浪费。因此,它不是在编译时创建/知道的。
【问题讨论】: