LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 573|回复: 5

为什么函数中只有2个字符数组变量(共15字节),堆栈中却要开辟40字节空间??

[复制链接]
发表于 2004-6-28 10:59:45 | 显示全部楼层 |阅读模式
function ()
        {
                char buffer1[5];
                char buffer2[10];
        }

        pushl %ebp
        movl %esp,%ebp
        subl $40,%esp

//就是按字分配也应该只有24个字节啊?为什么是40??谢谢!
发表于 2004-6-28 11:34:48 | 显示全部楼层
看不懂??
 楼主| 发表于 2004-6-28 22:47:25 | 显示全部楼层
??
发表于 2004-7-7 16:31:23 | 显示全部楼层
一般来说是不会刚好15的,linux内存管理将内存分成很多大小不同的单元,比如10个字节的多少块,50字节的多少块,128字节的多少块。。。系统会为你找到能满足你分配大小的最小的块分配给你,或者多个更小的块。

比如你需要15自己,它可以给你2个10字节的块或1个50字节的块
发表于 2004-7-7 16:43:00 | 显示全部楼层
哦,sorry,堆栈我也不明白,谁来解释一下
发表于 2004-7-8 13:36:22 | 显示全部楼层
你看清楚了没有啊?sub l,是l哦
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表