|
|
发表于 2005-9-19 16:11:11
|
显示全部楼层
Post by Illidan
我读了些帖子,不过还是不明白,为什么栈里增加4个字节会影响free。请版主明示
那你应该明白了,malloc的时候,事实上得到的内存是大于我们请求的大小的,而在返回给用户的指针前面有两个int是控制所用,当free的时候,会使用到那两个int里面的数据,栈里面增加4个字节,那么在指针前面的数据就会不一样,比如本来有可能有一个int是ebp,如果增加了4字节后,就不是ebp了,而是那个局部变量的值,虽然这两者都不是正确的信息,但是因为里面的数据不同,却会产生不一样的效果.具体要知道为什么会有那样的效果,比如是段错误还是指针错,要结合自己程序的汇编码和所使用的c库的实现来看 |
|