linux c 获取进程内存地址,linux c程序内存分布

/*高地址

*

*      栈    局部变量(向下增长)

*      堆    动态申请内存(向上增长)

*      bss   未初始话全局变量(初始化为0)

*

*      data  只读数据段 (已始化全局变量,静态变量,常量)

*      code  只读代码段

*低地址

* */#include 

#include 

/*常量*/

const int ca = 10 ;//全局常量 data区

static sa;//静态,data区

int a;//全局未初始化 bss 区

int b = 4;//全局初始化 data区

/*常量*/

const int ca = 10 ;//全局常量 data区

void func1(); //子函数,代码区

void func2();//子函数,代码区

int main(void)

{

/*申请一块内存  堆*/

int *p = NULL;//栈

p = (int *)malloc(sizeof(int));

*p = 5;

char *p1 = "hello world";//data区

char p2[] = "hello world";//栈区

/*局部变量*/

int aa;

/*栈区*/

printf("***********栈区************\n");

printf("局部变量:%p\n",&aa);

aa = 5;

printf("局部变量:%p\n",aa);

printf("p2:%p\n",p2);

printf("\n\n");

/*堆区*/

printf("*********堆区**************:\n");

printf("动态内存区:%p\n",&p);

printf("动态内存区:%p\n",p);

/*非初始化数据段*/

printf("\n\n");

printf("*********bss 区************:\n");

printf("非初始化全局变量:%p\n",&a);

printf("\n\n");

/*只读区*/

printf("********only read 只读区********\n");

printf("data 段:\n");

printf("全局初始化变量:%p\n",&b);

printf("p1:%p\n",p1);

printf("常量:%p\n",&ca);

printf("静态变量:%p\n",&sa);

printf("\n\n");

printf("代码段:\nmain地址:%p\n",main);

printf("子函数2:%p\n",func2);

printf("子函数1:%p\n",func1);

}

void func1()

{

printf("子函数\n");

}

void func2()

{

printf("子函数\n");

}

结果:***********栈区************

局部变量:0xbfca4bb8

局部变量:0x5

p2:0xbfca4bbc

*********堆区**************:

动态内存区:0xbfca4bc8

动态内存区:0x9c34008

*********bss 区************:

非初始化全局变量:0x8049a00

********only read 只读区********

data 段:

全局初始化变量:0x80499f0

p1:0x80486e8

常量:0x80486e4

静态变量:0x80499fc

代码段:

main地址:0x8048424

子函数2:0x804860a

子函数1:0x80485f6

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值