对分配的空间大小为什么不严格管理?
- C/C++ code
#include<cstdio>#include<iostream>void main(){ int* p = (int*)malloc(10*sizeof(int)); p[11] = 1; int* p2 = new int[10]; p2[11] = 1; int p3[10]; p3[11] = 1; system("pause");}
按理说三个都越界了啊,为什么不报错?
[解决办法]
比较高级的语言会,c要兼顾速度
[解决办法]
[解决办法]
这种错误应该是由程序员自己来避免的而不是依赖语言机制
[解决办法]
为了达到高效率,C语言必须放弃一些可以避免的错误检测机制吧。你说你越界看不出来么?
[解决办法]
越界只是修改了未知地址的值,不能保证出错