函数局部变量是否始终存储在每次执行的同一组内存位置中?

Joh*_*dle 3 c memory function

我假设没有但不积极.不确定如果其他变量可以占用堆栈中的相同位置.

Joh*_*136 6

不可以.函数的局部变量并不总是在同一个地址.

考虑一个递归函数.如果局部变量应该在同一个地方,那么每次进入和退出递归时,都必须复制它们的所有值.

正常的做法是每个函数调用在堆栈上都有一个"块".如果连续两次调用相同的函数,则局部变量地址可能相同.如果以递归方式调用它,则第二个调用将位于堆栈的不同区域,因此本地变量地址将不同.

  • [此外,将程序加载到内存中的软件可能会故意随机化地址,它会加载进程的各个部分,以帮助防止恶意攻击者利用它们.](https://en.wikipedia.org/wiki/Address_space_layout_randomization) (2认同)