进程的内存映像

2024-09-09  本文已影响0人  _结弦

代码

#include <stdio.h>
#define X 1024
int a = 1;
const int b = 1;
void main(){
  static int c = 3;
  int d = 4;
  int *p = (int*)malloc(sizeof(int)*10);
  a = b + c + d;
  for(int i = 0; i<10;i++){
    p[i] = X + i;
  }
  printf("hello\n");
}

只读代码数据区

注意, 这里是代码和数据区

a = b + c + d;
for(int i = 0; i<10;i++){
  p[i] = X + i;
}
printf("hello\n");

读写数据

这里存放的是全局变量

const int b = 1;
static int c = 3;

heap

malloc(sizeof(int*)*10);

共享库

比如printf的代码

用户栈

函数的局部变量, 函数调用信息

int d = 4;
int *p

注意

可能有的同学看到只读代码数据区和用户栈时比较迷糊, 为什么在栈中的p会在代码区找到, 这其实有一个符号引用, 代码块里的变量只是对实际变量的一个引用 , 知道真正运行代码的时候, 这个符号会被解析为一个地址指针, 这个指针指向的是栈中的地址

上一篇 下一篇

猜你喜欢

热点阅读