。。。
堆栈也构建在被初始化为零的内存领域上。虽然堆栈并不需要被初始化为零,但这种早期UNIX的习惯仍被保存了下来。4.2BSD为了缩短起动时间并没有将堆栈清零而是保留了老内容。但是,考虑到这样可能恶用老程序的堆栈溢出,或可能由老程序带来的不可预见的bug,4.3BSD中再次将堆栈用零初始化。
。。。
原帖由 Alligator27 于 2005-11-29 22:58 发表
我是想问 FreeBSD1.0.2 是否用 Virtual Memory Management.
如果是, stack清零就有点怪.
原帖由 zalem 于 2005-11-29 18:19 发表
问题解决了...在FreeBSD1.0.2上运行了一次,确实被初始化为0了...看来还是描述老了
原帖由 雨丝风片 于 2005-11-30 16:42 发表
不要轻易下结论,,说说我的看法:
是否清0是对page来说的,你的例子并不能证明FreeBSD没有对堆栈所在页进行清0,
因为你的栈变量离main函数入口太“近”了。你可以在main函数中定义一个大数组,
然后 ...
原帖由 zalem 于 2005-11-30 23:17 发表
呵呵,以后不再轻易下结论了,等什么时候在src里面找到了好好看看...
×××××××
现在在google找的时候发现这篇文章,准备先看看,应该不错...
http://ezine.daemonnews.org/200001/fr ...
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |