虚拟地址空间问题记录
虚拟地址空间问题记录
地址空间的高低地址问题

今天在牛客网学习时看到这样一张图,隐约记得书上讲过OS在低地址区,然后在网上查出了这样一句话

这句话要怎么理解,为什么OS的位置在物理地址和虚拟地址上是反过来的
堆栈相对位置问题
我们看到的地址肯定是虚拟地址,根据上图简单测试了一下堆栈的相对位置
源代码
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int a=1,b=2,c=3;
int *p1=(int *)malloc(sizeof(int));
int *p2=(int *)malloc(sizeof(int));
free(p1);
free(p2);
}
调试信息截图

三点疑问
- 同样的代码,左边是在Linux下用gcc编译,右边是VS2019,为什么Linux下给出的是48位的地址,Windows下给出的是32位的地址
- 局部变量分配在栈中,为什么在Linux gcc编译下a b c三个变量的地址依次是由低到高,而在VS2019下是由高到低
- 动态申请的变量在堆中,为什么Linux下堆的地址比栈的地址低,而Windows下堆的地址比栈的地址高
浙公网安备 33010602011771号