免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: bespecial
打印 上一主题 下一主题

[C] 菜鸟问个栈的问题 [复制链接]

论坛徽章:
59
2015年亚洲杯之约旦
日期:2015-01-27 21:27:392015年亚洲杯之日本
日期:2015-02-06 22:09:41拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015元宵节徽章
日期:2015-03-06 15:50:392015年亚洲杯之阿联酋
日期:2015-03-19 17:39:302015年亚洲杯之中国
日期:2015-03-23 18:52:23巳蛇
日期:2014-12-14 22:44:03双子座
日期:2014-12-10 21:39:16处女座
日期:2014-12-02 08:03:17天蝎座
日期:2014-07-21 19:08:47
11 [报告]
发表于 2012-09-05 19:16 |只看该作者
回复 10# bespecial


    给局部变量分配空间噬。

论坛徽章:
0
12 [报告]
发表于 2012-09-06 09:30 |只看该作者
回复 11# folklore


    但是用不到这么大的空间。
   比如说main函数中0x18, 分配了这么大的栈空间,但有很多没有用。
  不知道,0x18是怎么确定的?

论坛徽章:
0
13 [报告]
发表于 2012-09-06 09:36 |只看该作者
回复 11# folklore


    可是,用不到那么大的啊
    比如说main函数,分配0x18,但实际不需要那么大。
   这个0x18是怎么决定的。

论坛徽章:
0
14 [报告]
发表于 2012-09-06 14:58 |只看该作者
栈地址对齐问题 (stack pointe 就是ESP)

The stack pointer for a stack segment should be aligned on 16-bit (word) or 32-bit(double-word)
boundaries, depending on the width of the stack segment.

在实际测试时,需要视编译器而定,即便是相同的编译器,不同的优化策略得出的结果也有可能不同。
在这ESP因该需要保证16字节对齐。

论坛徽章:
0
15 [报告]
发表于 2012-09-11 14:47 |只看该作者
在linux中的堆栈应该分为两块
一是:刚开始shell帮我们创建的进程,有一个堆栈。
二是:在我们的进程中,如果创建了线程,则一个线程对应一个堆栈,此堆栈是为了维护线程的函数调用逻辑的。
楼主可以自己在本地通过查看/proc/pid/maps 文件来确定。

至于堆栈的大小有两种方式进行设置:
一是:通过api进行设置。
二是:通过配置脚本进行设置。

论坛徽章:
0
16 [报告]
发表于 2012-09-11 22:42 |只看该作者
栈是系统动态分配的  
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP