关于C++动态数组的问题

C++语言 码拜 8年前 (2015-11-12) 818次浏览
C++问题是这样的,为什么本人动态申请了数组大小为100的数组,但是调用数组下标为101的数组元素时不会提示数组越界,而且输出的结果也正常?具体代码如下:
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
int size;
size=100;
int *a=new int[size];
//delete [] a;
a[101]=10;
cout<<a[101]<<endl;
return 0;
}
解决方案:10分
C/C++默认没有边界检查,原因是这会带来额外开销。
假如需要的话,用vector/array的at成员函数。
解决方案:5分
C,C++ 不对数组越界进行检查
本人猜原因是,C,C++经常用指针操作数组,而指针中不包含数组边界信息。
解决方案:10分
c/c++不带越界访问检测,java是有的……
解决方案:20分
越界检查不是编译器来保证,是需要程序员本人确保,没出错只是运气好,你写了你不该写的内存,虽然此时此刻没问题,但你程序将为以后某时某永刻的崩溃带来了隐患

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于C++动态数组的问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)