c++ primer上面的一个说法大家麻烦看看

Y神圣 2004-12-27 08:58:50
#include "iostream.h"
int main(int argc,char** argv)
{
int *pi = new int(10);
int *pia = new int[10];
if(*pi<10)
{
pia[*pi] = *pi;
*pi = *pi+1;
}

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

在xp下面用vc++6.0编译无错,可是书上说有错,请问书上为什么这么说?
自己把*pi的条件改了*pi<11,运行就有错了,估计是越界访问的原因,麻烦达人指教。谢谢了。
...全文
93 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
alley_zhan 2004-12-27
  • 打赏
  • 举报
回复
nod!
new int[10];
下标为0..9
yjh1982 2004-12-27
  • 打赏
  • 举报
回复
pia[*pi]是越界了啊
nielisheng 2004-12-27
  • 打赏
  • 举报
回复
*pi的初值为10, if语句不会执行,这样的语句有逻辑错误.
修改为int *pi = new int(1);再看一下.

15,447

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧