リンクリストクラスに取り組んでいます。コンパイルするたびに、エラーや警告は表示されません。ただし、実行可能ファイルは機能しなくなります(Windows Dev C ++を使用)。問題は私のデストラクタであると推測しました。
私の理解では、動的に作成されたオブジェクトの場合、またはオブジェクトがスタック上のオブジェクトのスコープから外れるたびに、デストラクタがdeleteキーワードで呼び出されます。
スタックオブジェクト(Node *の結果)がデストラクタを呼び出すときに問題が発生すると思いますが、実際にはわかりません。
これが私のヘッダーファイルです:
#ifndef Node_H
#define Node_H
class Node{
int data;
Node* next;
public:
Node(int data);
~Node();
void insert(int d);
Node* remove(int d);
void removeDups(void);
Node* add(Node* a, Node* b);
void printOut(void);
};
#endif
.cppファイルの関連部分:
#include <iostream>
#include "Node.h"
using namespace std;
Node::Node(int d){
data = d;
next = NULL;
}
Node::~Node(){
Node* n = this;
Node* delptr;
while(n->next != NULL){
delptr = n;
n = n->next;
delete delptr;
}
delete n;
}
void Node::insert(int d){
Node* n = this;
Node* current = new Node(d);
while(n->next != NULL){
n = n->next;
}
n->next = current;
}
主要:
int main (void){
int i = 0;
Node* root = new Node(111);
Node* result;
root->printOut();
for (i = 0; i < 11; i++){
root->insert(i);
}
root->printOut();
delete root;
getchar();
return 0;
}
また、USB上でDevC++を実行しています。それでの私の望みは、私のOSでのメモリリークを防ぐことでした。あれは正しいですか?
ありがとう
-トリングヴ