我试图交出 c 中的内存分配。
根据following link ,栈和未初始化数据段不同,本地函数的未初始化数据进入未初始化数据段。
如果是这种情况,那么在代码中包含未初始化局部变量的情况下,堆栈段中存储的是什么?它是空的吗?
最佳答案
我不推荐阅读“geeksforgeeks”教程。你有一些误解。
他们所谓的“未初始化数据”,.bss
段,实际上是存储静态存储持续时间的变量,零初始化。包括明确初始化为零值的任何此类变量。
可以找到静态存储持续时间和不同公共(public)段的解释以及示例 here .
只有 具有静态存储持续时间的变量以.bss
和.data
结束。局部变量总是在堆栈或 CPU 寄存器中结束,无论它们是否被初始化。
(请注意,这些都不是由 ISO C 标准指定的,而是由行业事实上的标准指定的。)
关于c - 堆栈段和未初始化数据段的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47301556/