对于C/C++程序员来说,这意味着什么?了解它有多重要?
至少在概念上,所有平台都是一样的吗?
我把它理解为函数用来存储局部变量的已分配内存的挡路……
我想知道更多
对于C/C++程序员来说,这意味着什么?了解它有多重要?
至少在概念上,所有平台都是一样的吗?
我把它理解为函数用来存储局部变量的已分配内存的挡路……
我想知道更多
激活记录是堆栈帧的另一个名称.它是构成调用堆栈的数据 struct .它通常由以下部分组成:
因此,调用堆栈由任意数量的激活记录组成,这些记录在添加新的子 routine 时被添加到堆栈中,并在它们返回时从堆栈中移除(通常).
元素的实际 struct 和顺序是由平台甚至实现定义的.
对于C/C++程序员来说,general knowledge个这样的 struct 有助于理解某些实现功能,如调用约定,甚至为什么缓冲区溢出允许运行第三方恶意代码.
更多的intimate knowledge将进一步推进上述概念,并且即使在没有调试器或调试符号的情况下,也允许程序员调试他们的应用程序和读取存储器转储.
不过,更广泛地说,C/C++程序员可以在其业余编程生涯的很大一部分时间里,甚至不考虑调用堆栈.