读书人

编了一个程序编译无异常。但是运行时

发布时间: 2013-10-06 18:25:14 作者: rapoo

编了一个程序,编译无错误。但是运行时系统报错。
小弟编了个程序,:设计一个名为car的结构,用它存储下述有关汽车的信息:生产商、生产年份。编写一个程序,向用户询问有多少量汽车,随后,程序用new来创建一个由相应数量的car结构组成的动态数组。接下来,程序提示用户输入每辆车的生产商,和年份信息。最后程序将显示每个结构的内容,以下是我写的程序:
#include<iostream>
#include<string>
using namespace std;

int main()
{
struct car
{
string maker;
int year;
};
int size;
car *one=new car [size];
cout<<"how many cars do you wish to catalog?";
cin>>size;
cin.get();
for(int i=0;i<size;i++)
{
cout<<"Car #"<<i+1<<":"<<endl;
cout<<"Please enter the make:";
getline(cin,one[i].maker);
cout<<"Please enter the year made:";
cin>>one[i].year;
cout<<endl;
}
cout<<"Here is your collection"<<endl;
for(int i=0;i<size;i++)
{
cout<<one[i].year<<endl;
}
return 0;
}

我是在linux下用emacs编的 编译无错误,运行后 输入size为2 当我输入第一组 maker和year后, 运行显示核心已转储,我把
cout<<"Please enter the make:";
getline(cin,one[i].maker);
代码删除后,程序可以正常运行。求大神指导 linux emacs c++
[解决办法]

引用
warning C4700: 使用了未初始化的局部变量“size”


  int size;
//car *one=new car [size];
cout<<"how many cars do you wish to catalog?";
cin>>size;
car *one=new car [size];

[解决办法]
struct car
{
string maker;
int year;
};
int size;
car *one=new car [size];
cout<<"how many cars do you wish to catalog?";
cin>>size;
还没初始化size就直接用来new了?改法看#2
[解决办法]

int size;
cin>>size;
car *one=new(std::nothrow) car [size];
if(NULL == one)
return -1;

自己分配的one 最后没有delete
[解决办法]
引用:
..改正之后程序无误..谢谢 大神指导...我还想问下 为什么这样的问题编译器不会指出来?

引用
warning C4700: 使用了未初始化的局部变量“size”
这就是编译器指出来的。

另外,不delete会引起内存泄漏。这是需要避免的。
[解决办法]
size没给值就用了 同学

读书人网 >C++

热点推荐