读书人

vc++ 6.0用不了动态数组?该怎么处理

发布时间: 2013-01-23 10:44:49 作者: rapoo

vc++ 6.0用不了动态数组?
#include <iostream>
using namespace std;
int main()
{
int i,n;
char *p=new char[n];
cout<<"输入数组大小:";
cin>>n;
cout<<"输入数组的元素"<<endl;
cin>>p;
cout<<p;
delete [] p;
return 0;
}

就这么一段代码,在vc里运行竟然会出现错误,怎么回事呢??
在code blocks里是没事的,要怎么改才能在vc上运行呢?
[解决办法]
好象你得将申请动态数组的语句,,放到输入n的值的语句之后吧。。要不然铁定过不去啊。。
[解决办法]
1 n是垃圾值
2 如果n是在创建动态数组之前完成赋值 你输入的字符串最多只能是n-1个字符
[解决办法]
你把那个cin>>n放到new关键字前面,你开辟空间之前不知道具体的n值怎么不出错啊。
[解决办法]
你这个代码new 的空间和你输入的n的大小不相同...

你在new的时候还没有对n赋值,因此此时的n是一个随机值,所以极有可能你输入字符串之后就溢出了。

cout在对char*执行的之后,要去找'\0'符。你输入的字符串长度如果超过了new 的空间,那你的字符串就么有这个符,那就很危险了。

读书人网 >C++

热点推荐