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

4044 人浏览 | 时间: 2015-06-25 21:25:40 | 作者: codexia

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

请微信扫码阅读。
为防止恶意爬虫,
已开启反爬机制,
理解哟~~~~
标注
评论
站内搜
百度搜
传送到手机
手机扫码,识别文字,完成传送x
加载中...
标注内容x
加载中...
添加标注x
收藏 0 点赞 0

相关阅读