计算机内存是不是规定了某些地方允许访问,某些地方不允许访问啊?汇编语言中有个栈,里面有个栈满和栈空

计算机内存是不是规定了某些地方允许访问,某些地方不允许访问啊?汇编语言中有个栈,里面有个栈满和栈空的说法,说要是入栈或出栈的时候发生溢出会有危险,我一直无法理解,既然说内... 计算机内存是不是规定了某些地方允许访问,某些地方不允许访问啊?汇编语言中有个栈,里面有个栈满和栈空的说法,说要是入栈或出栈的时候发生溢出会有危险,我一直无法理解,既然说内存段中的内容不可预知,那么要是定义了某段内存为栈段,现要向其中装入数据,怎么知道新来的值是否会覆盖原先栈里面的值(要是有的话)啊???在编程的时候,是不是规定了有些地方是不可随意访问的啊?编译系统会给自己规定一个范围吗?在这个范围之内的内存段,可以随便使用,而范围之外的是不可以访问的,毕竟一台计算机不只是只有现在我们编写的程序,还有许许多多其它程序啊! 展开
 我来答
一剑出血
高粉答主

2016-03-11 · 醉心答题,欢迎关注
知道大有可为答主
回答量:5.7万
采纳率:78%
帮助的人:1.7亿
展开全部
“计算机内存是不是规定了某些地方允许访问,某些地方不允许访问啊?”
在有操作系统的情况下,根据用户对计算机硬件的控制权限不同,内存大部分情况下都是不可访问的,只有向操作系统显式申请的内存才可以直接访问。

“要是定义了某段内存为栈段,现要向其中装入数据,怎么知道新来的值是否会覆盖原先栈里面的值(要是有的话)啊???”
理论上只要是“栈”,并且操作得当,是不可能出现覆盖情况的,因为入栈出栈操作的同时就移动了栈指针,不会访问到之前的栈内容。但是如果预分配的栈空间不足,就有可能溢出——这个时候就会破坏相邻内存块的内容了。

“在编程的时候,是不是规定了有些地方是不可随意访问的啊?编译系统会给自己规定一个范围吗?”
当然。我前面说了,大部分的内存空间是不能够随意访问的(需要程序显式申请)。这是取决于操作系统的——资源管理,乃是操作系统的天职所在。
更多追问追答
追问
谢谢您精辟的回答,可以留个您的联系方式吗?比如qq
您好!请问什么叫向操作系统显示申请啊😊?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式