读书人

对分配的空间大小为什么不严格管理?该

发布时间: 2012-04-14 17:14:21 作者: rapoo

对分配的空间大小为什么不严格管理?

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/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;
……

[解决办法]
这种错误应该是由程序员自己来避免的而不是依赖语言机制
[解决办法]
为了达到高效率,C语言必须放弃一些可以避免的错误检测机制吧。你说你越界看不出来么?
[解决办法]
越界只是修改了未知地址的值,不能保证出错

读书人网 >C++

热点推荐