小编nav*_*mar的帖子

为什么动态分配的两个变量的内存位置不连续?

我使用两个变量,其中内存是动态分配的,我打印内存位置,但它们不是连续的.为什么?

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

int main()
{
    int *a = malloc(sizeof(int));
    int *b = malloc(sizeof(int));
    printf("\n a=%p \t b=%p  \n",a,b);
}
Run Code Online (Sandbox Code Playgroud)

我得到的答案(在Linux中)是

第一次:

 a=0x20a0010     b=0x20a0030
Run Code Online (Sandbox Code Playgroud)

第二次:

 a=0x657010      b=0x657030
Run Code Online (Sandbox Code Playgroud)

第3次:

 a=0x139e010     b=0x139e030 
Run Code Online (Sandbox Code Playgroud)

为什么第1次,第2次和第3次的内存位置a和b变量之间的确切差异是什么?

这与分页内存有关吗?

我的处理器是64位.

c c++ linux

5
推荐指数
2
解决办法
508
查看次数

标签 统计

c ×1

c++ ×1

linux ×1