c++ - 进程退出,值为 3221225477
问题描述
我创建了一个使用动态数组的程序。它有效,当我使用我的插入函数然后我显示数组的元素时,它显示了我想要的所有内容。问题是在程序结束时它没有返回值为 0,而是被阻塞了几秒钟并说“进程退出,值为 3221225477”。怎么了?
标题:
#ifndef VETTORE_H
#define VETTORE_H
#include "regalo.h"
typedef regalo T;
class vettore {
friend ostream& operator<<(ostream&,const vettore&);
friend istream& operator>>(istream&,vettore&);
private:
T *v;
int riemp;
int max;
public:
vettore();
vettore(const int);
~vettore(){delete [] v;};
bool full(){return riemp==max;};
bool empty()const;
bool inserisci(const T&);
T& operator[](const int index);
};
#endif
cpp文件:
#include "vettore.h"
ostream &operator<<(ostream& out,const vettore & v1){
for(int i=0;i<v1.riemp;i++){
out<<v1.v[i];
}
return out;
}
istream &operator>>(istream& in,vettore &v1){
for(int i=0;i<v1.riemp;i++){
in>>v1.v[i];
}
return in;
}
vettore::vettore(){
riemp=0;
max=10;
v=new T[max];
}
vettore::vettore(const int n):max(n),riemp(0){
v=new T[max];
}
bool vettore::empty()const{
if(riemp==0){
return true;
}else return false;
}
bool vettore::inserisci(const T& n){
if(max==0){
cout<<"Inserisci il massimo di elementi del vettore: ";
cin>>max;
}
if(!full()){
v[riemp]=n;
riemp++;
return true;
}else return false;
}
T& vettore::operator[](const int index){
return v[index];
}
主文件:
#include "vettore.h"
int main(int argc, char** argv) {
int riempimento;
vettore vett(1);
regalo r1("Alex",300,"quadrato");
vett.inserisci(r1);
cout<<"Gli elementi del vettore sono: \n";
for(int i=0;i<riempimento;i++){
cout<<vett[i]<<endl;
}
system("PAUSE");
return 0;
}
解决方案
您的代码中有几个问题:
riempimento
未初始化,因此 main 中的 for 循环将执行未知次数的迭代,可能超过向量的大小。最好riemp
从向量内部公开值并在循环中使用它。- 您需要实现三的规则,这不会给您带来问题,但如果您复制
vettore
对象,将来会。 - 如果
max
在您调用inserisci
时提示用户输入 max 值时为 0,则您不会检查是否cin
成功,也不会重新分配v
以使其足够大以包含max
元素。 不是问题,但
empty
可以简单地实现为:bool vettore::empty()const{ return riemp==0; }
推荐阅读
- c# - 如何使用 Moq 模拟 HttpRequestMessage
- python - 使用 Open CV 获取轮廓内的平均颜色
- oauth-2.0 - Snapchat 登录工具包错误:缺少 PKCE 参数
- hadoop - 如何在新的 RHEL 服务器上安装 Beeline(Hive 客户端)?
- mongodb - azure aks 将 k8 集群中运行的 mongodb 备份到本地文件或 azure 存储
- python - 选择熊猫中条件为真的所有行
- javascript - Chart.js 工具提示未显示在折线图上
- python - 如何在 HoverTool 上获取轴值 - Bokeh
- python - 输出 CSV 文件中的虚假数据
- c# - Automapper AssertConfigurationIsValid 不检查 ReverseMap