C语言内存布局
2013-06-09 21:54
176 查看
结合下面代码 讲解
======================
函数(程序自身)
fun1() = 0x102546610
fun2() = 0x102546650
字符串常量
string=0x102546e28
======================
静态变量
函数内加 static的变量
fun1_static=0x1025470a4
fun2_static=0x1025470a8
全局变量
global=0x1025470a0
=====================
用malloc开辟的空间
malc =0x7fc8824000e0
=====================
函数 子函数中的
动态变量
fun1_var=0x7fff5d6bac3c
fun2_var=0x7fff5d6bac3c
=====================
运行结果:
main_var=0x7fff5d6bac74 , global=0x1025470a0
fun1_var=0x7fff5d6bac3c , fun1_static=0x1025470a4
fun2_var=0x7fff5d6bac3c , fun2_static=0x1025470a8
fun1() = 0x102546610 , fun2() = 0x102546650
string=0x102546e28
malc =0x7fc8824000e0
环境: mac+ gcc4.2
======================
函数(程序自身)
fun1() = 0x102546610
fun2() = 0x102546650
字符串常量
string=0x102546e28
======================
静态变量
函数内加 static的变量
fun1_static=0x1025470a4
fun2_static=0x1025470a8
全局变量
global=0x1025470a0
=====================
用malloc开辟的空间
malc =0x7fc8824000e0
=====================
函数 子函数中的
动态变量
fun1_var=0x7fff5d6bac3c
fun2_var=0x7fff5d6bac3c
=====================
#include<stdio.h> #include<stdlib.h> #include<math.h> #include<string.h> void fun1() { int fun1_var; static int fun1_static; printf(" fun1_var=%p , fun1_static=%p\n" , &fun1_var, &fun1_static); } void fun2() { int fun2_var; static int fun2_static; printf(" fun2_var=%p , fun2_static=%p\n" , &fun2_var, &fun2_static); } int global; int main(void) { int main_var; printf(" main_var=%p , global=%p\n" , &main_var ,&global ); fun1(); fun2(); printf("fun1() = %p , fun2() = %p \n", fun1 , fun2); printf("string=%p\n" , "ssss"); int *malc = malloc(16); printf(" malc =%p\n" , malc); return 0; }
运行结果:
main_var=0x7fff5d6bac74 , global=0x1025470a0
fun1_var=0x7fff5d6bac3c , fun1_static=0x1025470a4
fun2_var=0x7fff5d6bac3c , fun2_static=0x1025470a8
fun1() = 0x102546610 , fun2() = 0x102546650
string=0x102546e28
malc =0x7fc8824000e0
环境: mac+ gcc4.2