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

C++指针的简单有关问题

2012-11-05 
C++指针的简单问题char*anew char(10)for(int i(0)i10i++)a[i]i+afor(int i(0)i10i++)couta

C++指针的简单问题

char*a=new char(10);

 for(int i(0);i<10;i++)a[i]=i+'a';

 for(int i(0);i<10;i++)cout<<a[i];

 cout<<endl;

 delete []a;


这段代码放在主函数里执行是产生错误的,提示windows已经触发一个断点,原因可能是堆被破坏,也可能是用户在具有焦点时按下了F12。

如果把连个循环去掉,那就没错。

不知道错在哪里了?



[解决办法]
char*a=new char(10);
->
char*a=new char[10];

既然楼主你写下了int i(0),为什么你还会写下new char(10)
你不觉得后者明显有一个跟你想要的功能不一样的解释么
[解决办法]
这种错误提示,首先就猜测是越界

#1楼已指出

另外,i(0)这种初始化式写法的可读性太差,建议能不用就不用
[解决办法]

探讨new char(10)是分配内存,int i(0)是声明变量以进行循环,这有什么不妥么?

[解决办法]
探讨数组越界么?我即使把下标范围缩小一两位结果是一样的,还有,如果把delete语句删除,那就没有错误了。

[解决办法]
探讨

引用:new char(10)是分配内存,int i(0)是声明变量以进行循环,这有什么不妥么?

你这个只分配了一个字节,初始化为10

热点排行