您的位置:首页 > 编程语言 > C语言/C++

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

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

#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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: