程序意外完成
Program Has Unexpectedly Finished
无论出于何种原因,我的执行程序都无法正常工作。
#include <QtCore/QCoreApplication>
#include <tinyxml/tinyxml.h>
#include "classowner.h"
#include "character.h"
int main(int argc, char *argv[])
{
Character * holland = new Character("Holland", HUMAN, MALE);
delete &holland;
std::cout << "Hello, World!" << std::endl;
return 0;
}
我所有的输出状态都是程序无法正常执行。输出不会显示,但是当我不分配对象时,它会显示。很明显,这就是物体。我做错了什么?
更新
问题似乎不仅仅在于删除和分配内存。因此,我将发布Character类后面的实现。
标题:
#include <iostream>
#ifndef CHARACTER_H
#define CHARACTER_H
enum Race {HUMAN, DARK_ELF};
enum Gender {MALE, FEMALE};
class Character
{
public:
Character();
Character(std::string char_name, Race char_race, Gender char_gender);
~Character();
int get_id() { return this->char_id; }
std::string get_name() { return this->name; }
Race get_race() { return this->race; }
Gender get_gender() { return this->gender; }
private:
int char_id;
static int * char_count;
std::string name;
Race race;
Gender gender;
};
#endif // CHARACTER_H
//来源:
#include "character.h"
#include <iostream>
int * Character::char_count = 0;
Character::Character()
{
this->char_id = *char_count;
char_count++;
}
Character::Character(std::string char_name, Race char_race, Gender char_gender)
{
this->char_id = *char_count;
char_count++;
this->name = char_name;
this->race = char_race;
this->gender = char_gender;
}
Character::~Character()
{
}
delete &holland;
应该是
delete holland;
少一些脏话就好了。
另一方面,张贴一个简短的例子,简明扼要地说明这个问题是非常感谢的。
首先,您尝试取消引用一个空指针:
int * Character::char_count = 0;
class Character
的两个构造函数都执行此
this->char_id = *char_count;
这是一种取消引用空指针的尝试。这个代码对我来说毫无意义,我想你可以使用int
而不是指针:
int Character::char_count = 0;
//then
this->char_id = char_count;
也在这里:
Character * holland = new Character("Holland", HUMAN, MALE);
您将创建一个类型为class Character
的对象。您必须通过指向class Character
的指针来删除该对象——指针的类型应该是Character*
。相反,您尝试在类型为Character**
的指针上使用delete
,这会导致未定义的行为。
所以不是
delete &holland;
你必须使用
delete holland;
相关文章:
- 更改.cpp程序的输入文件中数据的位置会意外更改输出
- 多线程程序中出现意外的内存泄漏
- C++ 程序意外退出
- 在gcc中意外调用了Const重载.编译器错误或兼容性修复程序
- 如果我删除指针,我的C++程序会意外删除系统文件吗?
- Qt 应用程序具有意外的 QDir::currentPath
- 排序程序的意外错误代码
- 以下程序的意外输出
- QT应用程序意外的语言事件
- 简单程序中的意外推力错误
- 程序意外终止C
- 设置终止和意外处理程序
- 双精度数字程序意外值
- QWT示例该程序已经意外完成
- 使用双精度的程序的意外行为
- 查找素数的程序意外停止
- 程序意外地完成了-QT创建者
- cpp 程序中的意外输出
- 当我在递归函数中调用 return 时,我的程序意外完成
- Arduino上的意外程序停止