. : : 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