首页  >   经验  >   为什么栈中的数组越界后经常不崩溃,还可以正常的操作呢

为什么栈中的数组越界后经常不崩溃,还可以正常的操作呢

查看 codexia 的博客 2015-06-25 21:25:40 3233
   数组   越界  
手机阅读 | 转发赚积分
手机收藏 | 分享给好友
简介这个问题经常遇见,就是在函数中使用了一个数组,然后越界后,竟然还可以正常的操作,简直就是“毁三观”呀,有木有?一般都以为数组越界后就会报错或者崩溃,但是经常有时候越界后竟然一点事都没有,还可以正常使用,是不是很奇怪呢?本文来揭开谜团!

    使用数组也是家常便饭,但是经常出现越界使用数组也能编译通过的奇怪问题,和我们书中学习的很不一样,怎么折腾也不知道为什么,郁闷了吧!哈哈哈,别慌,这里就给你答案啦。
    函数中分配的数组,不是使用动态分配的那就就是自动分配的,就是在线程栈的内存空间分配的。如果使用动态分配,即使用malloc或者new等来分配的,则是在堆中分配的。堆是是一块单独的内存块,供各个进程线程来使用的。而在栈中分配的内存,会自动分配,使用完后自动释放。我们从来都是定义一个数组变量,然后用完就不管了,根本也没有管数组的释放,因为超过数组的作用范围后,自动就销毁了,释放了占用的栈内存。
    这个栈是每个进程中的,进程中创建一个线程,就会为线程在进程空间中分配一块内存给线程使用,这个内存就是线程栈。我们说的栈都是指线程栈。线程栈有一定大小,用于函数调用存储参数,记录调用函数的返回地址,用于函数返回到调用函数的位置继续执行,还用于分配局部自动变量。
    栈的空间就是一段内存。我们使用数组就在栈中分配,那么对数组操作,起始就是对数组对应的栈地址进行操作。下面给出数

1.微信扫码
2.点击按钮,粘贴命令
自动刷新 手动刷新
命令:rd eY~D[ 复制
提示:如果您发送了命令,自动刷新会展开全文。自动刷新最多60秒,超过60秒请点击手动刷新。
创作不易,汗水不止!为防止劳动果实被爬虫窃取,开启了反爬机制,需要您发送命令继续阅读。取关会再次出现此提示。一段时间后出现此提示,请再次发送即可。如有问题,请加客服微信Freeme007处理。感谢您的理解。
标注
评论
站内搜
百度搜
传送到手机
手机扫码,识别文字,完成传送x
加载中...
标注内容x
加载中...
添加标注x
文章标题:为什么栈中的数组越界后经常不崩溃,还可以正常的操作呢
文章地址:http://www.cjjjs.com/article/6252015402521145
转载到个人博客,请在文末带上右侧内容(含超链接):本文转载自:为什么栈中的数组越界后经常不崩溃,还可以正常的操作呢
收藏 0 点赞 0
公众号
微信赞赏
支付宝赞赏
领支付宝大红包
QQ群

相关阅读

  1. C++ Primer Plus 6th 4.13 编程练习题 第6题 结构体数组的初始化和使用 查找全网同类文章
  2. C++ Primer Plus 6th 4.12 复习题 第13题 动态创建数组与vector容器的创建 查找全网同类文章
  3. C++ Primer Plus 6th 4.12 复习题 第12题 数组下标使用和数组指针的使用对比 查找全网同类文章
  4. C++ Primer Plus 6th 4.12 复习题 第6题 声明并初始化数组 查找全网同类文章
  5. C++ Primer Plus 6th 4.12 复习题 第5题 数组下标的使用 查找全网同类文章
  6. C++ Primer Plus 6th 4.12 复习题 第4题 数组元素提取和操作 查找全网同类文章
  7. C++ Primer Plus 6th 4.12 复习题 第1题 声明数组变量 查找全网同类文章
  8. 如何返回函数内的二维数组 查找全网同类文章
  9. 向量改动态数组的问题 查找全网同类文章
  10. 数据结构作业之栈和队列实现字符串回文数判断 查找全网同类文章
分享到:
分享文章[为什么栈中的数组越界后经常不崩溃,还可以正常的操作呢]到QQ空间

相关阅读

猜您感兴趣