C語言內存佈局

結合下面代碼 講解

======================

函數(程序自身)

 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章