如何分配虚拟地址?

时间:2016-04-10 03:27:30

标签: c operating-system virtual-address-space

以此C代码为例

#include <stdio.h>
#include <stdlib.h>

int main() {

    int x;
    int* y = (int *) malloc(10*sizeof(int));

    printf("%p\n",&x);
    printf("%p\n",y);
    printf("%p\n",&(y[1]));

    while(1);

    return 0;
}

将打印看起来像这样的虚拟地址

0x7ffd4e96d214

0x908010

0x908014

每次运行二进制文件时虚拟地址都会不同,这让我想到了如何为程序实际确定虚拟地址?

1 个答案:

答案 0 :(得分:4)

这可能是ASLR的影响。

决定应该 - 正如地址空间布局随机化所说的那样 - 是随机的。