如何解释内存地址分配的顺序?

时间:2013-11-17 12:48:14

标签: c memory-management

我想弄清楚如何将内存地址分配给每个变量,所以我有以下代码:

#include <stdio.h>

int main() {

    int males;
    int females;

    printf("Address of 'int females': %p\n", (void *)&females);
    printf("Address of 'int males':   %p\n", (void *)&males);

    return 0;
}

当我用cc编译并运行程序时,我得到了这个输出:

Address of 'int females': 0x7fff54f52b34
Address of 'int males':   0x7fff54f52b38

但我分配int malesint females的顺序与地址不同。输出显示int females地址数字较小,为什么

我的直觉是看int males地址0x7fff54f52b34,然后是4个字节,int females分配到0x7fff54f52b38

编译器

Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)
Target: x86_64-apple-darwin12.5.0
Thread model: posix

1 个答案:

答案 0 :(得分:2)

负担在:你为什么想象有关于局部变量地址的任何规则?根据语言标准,您甚至不允许比较两个地址进行订购。