C++数组越界问题

你要首先了解内存分配的原理。 你在new操作之后,系统可能返回一个新分配的内存,也可能从已经分配并已经回收的内存中拿出来一个小块给你。 至于这块内存后面的那一部分(也就是a[3])是否能被访问,是不确定的。
我举几个例子吧(不知道你能不能够理解,我尽力而为):1,这个内存后边的内存是非法内存,例如这个内存后面的部分还没有被你的程序申请过,它已经位于堆内存管理的末端,那么这种情况a[3]赋值程序直接崩溃,一般可能报memory violation等非法访问一列(具体我忘记叫啥了,意思是这个意思)。 2,这个内存后面的内存确实被本程序申请过,而且它还未被占用,属于本程序的空闲内存,那么你那样赋值确实可以work,而且还能取到。3,这个内存不是空闲的,是本程序的,但可能是另外一个数组的一部分,那么你的操作相当于覆盖了其他的有效值,随后的程序运行可能会有问题。
完全不建议这样的操作,因为a[3]所在的内存可能当前是空闲的,等会就会被另外的程序引用,结果完全不可预料。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值