Mon programme d'exécution ne fonctionnera pas correctement, pour une raison quelconque.Le programme a terminé de façon inattendue
#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;
}
Tous mes états de sortie sont que le programme ne s'exécutera pas correctement. La sortie ne s'affiche pas, cependant quand je n'alloue pas l'objet, il le fera. Évidemment, c'est l'objet. Qu'est-ce que je fais mal?
Mise à jour
Il semble que le problème peut être quelque chose de plus que la suppression et l'allocation de mémoire. Ainsi, je vais poster l'implémentation derrière la classe Character.
tête:
#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
// Source:
#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()
{
}
vous supprimez la mémoire qui contient le pointeur sur votre objet réel, ce qui pourrait ne pas être dans le tas/mémoire dynamique Libération. Bien que vous ayez une exception. Parfois, libérant une mauvaise mémoire pourrait vous finir dans une corruption de mémoire grave qui nécessite beaucoup d'efforts pour comprendre! – sarat