C 语言中的内存分配如何处理分配的地址

问题描述 投票:0回答:0
#include <stdio.h>

int main(void){
    int a;
    int b;
    printf("%d %p %d %p", a, b, &a, &b);
    
    return 0;
}

我编写了这个 C 程序,试图探索 C 中的内存分配,我注意到一些奇怪的事情。我已经多次运行这个程序,大约 50 次,我注意到变量 a 总是得到相同的地址,在我的例子中是 0000000000000010,而变量 b 的地址总是不同的。据我所知,每次运行程序时,计算机都会为程序的变量分配内存,并且分配的地址不是标准的,而是随着每次执行而变化,因为它们取决于可用内存。那么为什么变量 a 每次都分配相同的地址,而变量 b 每次都分配不同的地址呢?这只是巧合还是有特殊原因导致这种情况发生? Result of my experiment.

我期望为两个变量分配不同的内存地址,并且由于程序似乎将相同的地址分配给变量 a 而不是变量 b,这对我来说似乎很奇怪。

c memory-address static-memory-allocation
© www.soinside.com 2019 - 2024. All rights reserved.