● 堆:由系统自动分配释放,存放函数的参数值、局部变量的值、返回地址等。

● 堆栈:存放动态分配的数据,一般由程序员动态分配和释放。若程序员不释放,程序结束时可能由操作系统回收。

● 共享库的内存映射区域:这是Linux动态链接器和其他共享库代码的映射区域。

Linux下进程的内存结构

由于在Linux系统中每一个进程都会有/proc文件系统下与之对应的一个目录(如将init进程的相关信息在/proc/1目录下的文件中描述),因此通过proc文件系统可以查看某个进程的地址空间的映射情况。例如,运行一个应用程序(示例中的可运行程序是在/home/david/project/目录下的test文件),如果它的进程号为13703,则输入“cat /proc/13703/maps”命令,可以查看该进程的内存映射情况,其结果如下:

$ cat /proc/13703/maps

/* 只读段:代码段、只读数据段 */

08048000-08049000 r-xp 00000000 08:01 876817 /home/david/project/test

08049000-0804a000 r--p 00000000 08:01 876817 /home/david/project/test

/* 可读写数据段 */

0804a000-0804b000 rw-p 00001000 08:01 876817 /home/david/project/test

0804b000-0804c000 rw-p 0804b000 00:00 0

08502000-08523000 rw-p 08502000 00:00 0 [heap] /* 堆 */

b7dec000-b7ded000 rw-p b7dec000 00:00 0

/* 动态共享库 */

b7ded000-b7f45000 r-xp 00000000 08:01 541691

/lib/tls/i686/cmov/libc-2.8.90.so

b7f45000-b7f47000 r--p 00158000 08:01 541691

/lib/tls/i686/cmov/libc-2.8.90.so

b7f47000-b7f48000 rw-p 0015a000 08:01 541691

/lib/tls/i686/cmov/libc-2.8.90.so

b7f48000-b7f4b000 rw-p b7f48000 00:00 0

b7f57000-b7f5a000 rw-p b7f57000 00:00 0

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查