搜索我的问题只得到了不相关的结果。这是最接近的,但它没有回答我的问题堆栈上的变量是否“静态分配”? 所以我知道,如果一个过程没有调用,那么它的堆栈框架就会分配在存储全局和静态变量的静态内存部分中。我的问题是:为什么这会产生优势?因为在运行时,如果堆栈框架在堆栈上分配,它们也会像静态内存一样被写入,对吗?谢谢!
搜索我的问题只得到了不相关的结果。这是最接近的,但它没有回答我的问题堆栈上的变量是否“静态分配”? 所以我知道,如果一个过程没有调用,那么它的堆栈框架就会分配在存储全局和静态变量的静态内存部分中。我的问题是:为什么这会产生优势?因为在运行时,如果堆栈框架在堆栈上分配,它们也会像静态内存一样被写入,对吗?谢谢!
虽然这个问题的前提确实值得怀疑(1),但有一个答案。
推送和弹出堆栈框架需要几条指令。因此,如果您确实可以将本地变量保持在静态,则可以节省这些指令。
以我个人的观点来看,除非在某些真正特殊的情况下,堆栈管理成本确实是整个过程的重要组成部分,否则这种做法的价值将是微不足道的——这很难令人相信。
(1) 在任何多线程环境中,任何过程都可以多次活动,无论它是否调用某些函数。