Hi, ich hab mal ne blöde Frage:
ich hab zwei Klassen, bietet sich einfach so an, wenn ich die zweite Klasse (die Klasse, die die andere, kleinere Klasse einbindet) lösche, müsste sich doch auch die erste Klasse löschen, oder?
Ein Codebeispiel:
(Header Datei)
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
class Command {
private:
char* Name;
UINT Parameters;
public:
Command();
~Command();
void Set(char* Name, UINT Parameters);
};
class Commandlist {
private:
Command* pCommandlist;
UINT Entries;
UINT MaxEntries;
public:
Commandlist(UINT MaxEntries);
~Commandlist();
void AddEntry(char* Name, UINT Parameters);
};
|
(CPP Datei)
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
/**********************************/
// Konstructor
Command::Command() {
this->Name = NULL;
this->Parameters = 0;
}
//Destructor
/**********************************/
Command::~Command() {
IS_SAFE_DELETE_ARRAY(this->Name);
}
// Set Methode
/**********************************/
void Command::Set(char* Name, UINT Parameters) {
IS_SAFE_DELETE_ARRAY(this->Name);
this->Name = new char [strlen(Name) + 1];
strcpy(this->Name, Name);
this->Parameters = Parameters;
}
// Konstructor Commandlist
/**********************************/
Commandlist::Commandlist(UINT uiNumArgs) {
this->pCommandlist = new Command [uiNumArgs];
this->Entries = 0;
this->MaxEntries = uiNumArgs;
}
// Destructor Commandlist
/**********************************/
Commandlist::~Commandlist() {
IS_SAFE_DELETE_ARRAY(this->pCommandlist);
}
// Eintrag hinzufügen
/**********************************/
void Commandlist::AddEntry(char* Name, UINT Parameters) {
if(this->Entries >= this->MaxEntries) { IS_ERROR_INTERNAL(); return; }
// Eintrag um eins erhöhen für einen neuen Eintrag
this->pCommandlist[this->Entries++].Set(Name, Parameters);
}
|
wenn ich jetzt also:
Commandlist CDMList;
CDMList.AddEntry("test", 1);
aufrufe, und es danach wieder terminiert wird (durch Programm Ende) müssten doch das Command Objekt ebenfalls zu dem Commandlist Objekt gelöscht werden, ohne das ein Speicherleck entsteht oder???