Jan*_*cak 2 c memory argument-passing
我正在准备 UNIX 考试,有一道关于 C 变量的内存位置的问题。假设我们有这样的代码
char sth;
int some_function(int arg) {
int some_int;
// some code here
}
Run Code Online (Sandbox Code Playgroud)
所以我想它sth位于堆上、some_int堆栈上,但位于哪里arg?有人可以解释一下 C 变量是如何管理的吗?
谢谢
请注意,这一切都取决于实现。C 标准甚至没有提到栈、堆等词。它只是讨论变量的预期行为,具体取决于变量的存储(、static等)。 externregister
尽管如此,通常arg会位于为该函数提供的堆栈帧中。它的范围仅限于函数,就像 的范围一样some_int。
顺便说一下,sth它不在堆上,它有一个静态全局存储。