【发布时间】:2021-07-01 11:36:21
【问题描述】:
我想知道在 c 中是如何分配内存的。在下面的示例中,编译器似乎为程序分配了一些内存,然后返回。它是如何以及为什么会这样工作的?
代码:
int main (void) {
int a;
int b;
int c, d;
printf("a: %p\nb: %p\nc: %p\nd: %p\n", &a, &b, &c, &d);
}
输出:
a: 0x7ffff275351c
b: 0x7ffff2753518
c: 0x7ffff2753514
d: 0x7ffff2753510
【问题讨论】:
-
a被首先压入堆栈,因此它具有最高地址。但是编译器可以随意存储这些局部变量,只要行为符合 C 标准。