预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

LinuxC程序存储空间的逻辑布局 关于LinuxC程序存储空间的逻辑布局 LinuxC程序存储空间的逻辑布局是怎么样的?为了方便大家,下面YJBYS小编为大家整理了关于LinuxC程序存储空间的逻辑布局的文章,希望对你有所帮助。 一、APUE上指出了LinuxC程序存储空间的'逻辑布局,对于X86上的Linux 正文段从0x08048000单元开始 栈底则在0xC0000000之下开始(栈从高地址向低地址生长) 图如下: 二、例程 实现一个函数f(),不用指针,实现在函数内修改传入参数的值。 #include"stdio.h" #include"sys/types.h" voidf1(u_int32_ta) { printf("%p\n",&a); u_int8_t*ap=(u_int8_t*)&a; while(++ap) { printf("%p\n",ap); if(*ap==a) { *ap=7; break; } } } main() { u_int32_ti=123; printf("%p\n",&i); f1(i); printf("%d\n",i); } 运行结果 /***result***/ /* BTC:/home/leon/test#./a.out 0xbf905300 0xbf9052e0 0xbf9052e1 0xbf9052e2 0xbf9052e3 0xbf9052e4 0xbf9052e5 0xbf9052e6 0xbf9052e7 0xbf9052e8 0xbf9052e9 0xbf9052ea 0xbf9052eb 0xbf9052ec 0xbf9052ed 0xbf9052ee 0xbf9052ef 0xbf9052f0 0xbf9052f1 0xbf9052f2 0xbf9052f3 0xbf9052f4 0xbf9052f5 0xbf9052f6 0xbf9052f7 0xbf9052f8 0xbf9052f9 0xbf9052fa 0xbf9052fb 0xbf9052fc 0xbf9052fd 0xbf9052fe 0xbf9052ff 0xbf905300 7 */ 从结果可以清晰的看到: 1进入函数f1()后,栈“向下”生长了。 2通过直接访问栈内容,修改了栈内的值。 注:这种操作相当不安全,因为不能保证栈内没有其它相同的值。