. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  栈可以溢出,为什么还有这个机制,直接指定一段内存不就行了吗  [待解决] 回复[ 7次 ]   点击[ 232次 ]  
pepenm
[帖 主]   [ 发表时间:2011-11-20 10:46 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:13
注册日期:2011-10-31 15:52
只要用ss,sp指定,不用管溢出不溢出不就行了吗,只要指定这段内存段是空的,怎么写不都可以吗
tomato
[第1楼]   [ 回复时间:2011-11-20 10:51 ]   [引用]   [回复]   [ top ] 
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51
是的。我们可以指定某段内存当作栈空间,前提是这段空间要是安全的。栈是否溢出需要编程者来判断,计算机是无法判断的。所以,我们在编程的时候一定要注意保证栈不会溢出。
pepenm
[第2楼]   [ 回复时间:2011-11-20 15:53 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:13
注册日期:2011-10-31 15:52
那怎么保证栈不会溢出?
pepenm
[第3楼]   [ 回复时间:2011-11-20 16:41 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:13
注册日期:2011-10-31 15:52
不是上面,听说栈有大小,怎么指定栈的大小
tomato
[第4楼]   [ 回复时间:2011-11-20 16:44 ]   [引用]   [回复]   [ top ] 
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51
只能定义一段安全的栈空间,栈的大小只是程序员认为的大小,设置我们只能设置栈的初始状态。
pepenm
[第5楼]   [ 回复时间:2011-11-21 10:20 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:13
注册日期:2011-10-31 15:52
定义一段安全的栈空间,难道要我们翻遍内存查看吗
tomato
[第6楼]   [ 回复时间:2011-11-21 18:54 ]   [引用]   [回复]   [ top ] 
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51
不需要查看内存,只需要在你的程序中申请栈空间就可以了。程序中申请到的栈空间都是合法的,安全的。
chinatree
[第7楼]   [ 回复时间:2011-11-21 19:51 ]   [引用]   [回复]   [ top ] 
荣誉值:118
信誉值:0
注册日期:2011-07-07 22:59
当然你也可以不在程序里申请,因为操作系统会给你安排一段大小为64k的内存做栈,但是没有自己申请的安全,而且自己申请的栈可以在栈中进行初始化,系统的不敢保证会不会有垃圾数据,而且在dos栈的允许溢出的,在虚拟86模式下是不允许的,会被操作系统杀死你的程序,会提示"cpu遇到无效指令".
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved