在使用new时容易出错的一个小问题

今天在使用new申请动态数组时发现了一个小问题:

下面这段代码打印出来的是什么?程序能完美运行嘛?

#include<iostream>
using namespace std;
int main()
{
int *pi = new int(1);
int *pia = new int[10];
while (*pi<11)
{
pia[*pi] = *pi;
cout << pia[*pi] << endl;
*pi = *pi + 1;


}
delete pi;
delete[] pia;
return 0;

}

我发现这段程序能打印1到10,但不能完美运行,原因是什么?

在用new申请pia数组时我们申请的是10个空间,但我们是从下标1开始赋值的,漏掉了pia[0],多了一个pia[10],因为是在堆空间上申请的内存所以在给pia[10]赋值是不会出错,但delete时就会出错。

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试

关闭