技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 算法 --> 变量在内存中的位置

变量在内存中的位置

浏览:2972次  出处信息

进程的逻辑内存空间
共享库和 mmap 内存映射
数据段 (全局static和本地static,全局变量)
代码段
堆(malloc ,引用)
栈 (本地变量,所以这个会是个随机数)

测试用程序

 

#include <stdio.h> #include <stdlib.h> #include <unistd.h>   static int static_glob = 0; int int_glob = 0;  int main() {     int int_local;     static int static_local = 0;     int *pa = malloc(sizeof(int));     *pa = 0;     printf("local int %p\n", &int_local);     printf("glob  int %p\n", &int_glob);     printf("glob  static %p\n", &static_glob);     printf("local static %p\n", &static_local);     printf("local pa %p\n", pa);             while(1)         sleep(1);      return 0; } </unistd.h></stdlib.h></stdio.h>

 

proc 下的进程 Id 下的 maps 文件可以见到内存的分配
heap 堆
stack 栈
数据区
代码区之类

$ cat /proc/13458/maps
007a6000-007a7000 r-xp 00000000 00:00 0 [vdso]
00c84000-00ca0000 r-xp 00000000 08:06 914742 /lib/i386-linux-gnu/ld-2.13.so
00ca0000-00ca1000 r--p 0001b000 08:06 914742 /lib/i386-linux-gnu/ld-2.13.so
00ca1000-00ca2000 rw-p 0001c000 08:06 914742 /lib/i386-linux-gnu/ld-2.13.so
00e86000-00fe0000 r-xp 00000000 08:06 914755 /lib/i386-linux-gnu/libc-2.13.so
00fe0000-00fe1000 ---p 0015a000 08:06 914755 /lib/i386-linux-gnu/libc-2.13.so
00fe1000-00fe3000 r--p 0015a000 08:06 914755 /lib/i386-linux-gnu/libc-2.13.so
00fe3000-00fe4000 rw-p 0015c000 08:06 914755 /lib/i386-linux-gnu/libc-2.13.so
00fe4000-00fe7000 rw-p 00000000 00:00 0
08048000-08049000 r-xp 00000000 08:07 132093 /home/fukai/C/4
08049000-0804a000 r--p 00000000 08:07 132093 /home/fukai/C/4
0804a000-0804b000 rw-p 00001000 08:07 132093 /home/fukai/C/4
09757000-09778000 rw-p 00000000 00:00 0 [heap]
b76ff000-b7700000 rw-p 00000000 00:00 0
b7711000-b7714000 rw-p 00000000 00:00 0
bfd61000-bfd82000 rw-p 00000000 00:00 0 [stack]

 

程序执行的结果

$ ./4
local int 0xbfd810b8 stack 栈
glob int 0x804a024 data 全局
glob static 0x804a028 data 全局static
local static 0x804a02c data 本地static
local pa 0x9757008 heap 堆 引用

建议继续学习:

  1. Axure之变量的使用    (阅读:4180)
  2. 从shell中向awk传递变量实例    (阅读:3592)
  3. 深入PHP使用技巧之变量    (阅读:3550)
  4. c语言全局变量和局部变量问题汇总    (阅读:2687)
  5. Linux的shell变量    (阅读:2675)
  6. PHP的可变变量名    (阅读:2235)
  7. 详解Linux bash中的变量    (阅读:1994)
  8. PHP 中对变量unset,可以销毁变量中的资源    (阅读:1951)
  9. 如何获取一个变量的名字    (阅读:1871)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
  • 作者:扶凯    来源: 扶凯
  • 标签: 变量
  • 发布时间:2011-07-24 15:02:04
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1