首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

动态数组一旦分配就不可改范围,但为什么这样的代码可以运行呢?解决方案

2012-02-07 
动态数组一旦分配就不可改范围,但为什么这样的代码可以运行呢?VC6里面的console程序:.......int*pnewint[

动态数组一旦分配就不可改范围,但为什么这样的代码可以运行呢?
VC6里面的console程序:

.......
int   *p   =   new   int   [];                                         //这个定义不报错
for(i=0;   i <15;   i++)*(p+i)=i*5;                     //给动态数组赋值
for(i=0;   i <15;   i++)cout < <*(p+i) < < "   ";       //打印出来
cout < <endl;

for(i=15;   i <30;   i++)*(p+i)=i*5;                   //给动态数组添加更多的值
for(i=15;   i <30;   i++)cout < <*(p+i) < < "   ";     //再打印出来
cout < <endl;
.......

运行结果一切正常。。。。。
晕啊,如果这样可以,谁还在定义动态数组的时候对它进行初始化、设定边界啊。。。。。

[解决办法]
运行结果一切正常 说明你人品好
[解决办法]
不报错不表示没有错

实际上静态数组越界使用也经常不报错的.

但这样用实际上就在修改指针指向的内存,这个内存只有系统知道它是用来干什么的
[解决办法]
C 里面有 ralloc, C++ 里好象的确是没有对应的东西啊。 混用 C 和 C++ 又不太合适。 我觉得重新分配块大点的, 拷贝过去是个惯用的办法。
[解决办法]
就是记录怎么分配 heap 的。 MSDN下了干嘛,好大的,登入上去看看就好了啊。

热点排行