Dan*_*nor 2 c++ segmentation-fault
我遇到由以下行引起的分段错误的问题:
heapVec[currentsize] = *(new Node(d));
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?
#include <vector>
using namespace std;
class Node {
private:
int data;
public:
Node(int);
// ~Node();
};
class Heap {
private:
vector<Node> heapVec;
int currentsize;
public:
Heap();
// ~Heap();
void insert(int);
void extractMin();
void reduceKey();
};
Node::Node(int d) {
data = d;
}
void Heap::insert(int d) {
heapVec[currentsize] = *(new Node(d));
currentsize++;
}
Heap::Heap() {
// this is the default constructor
currentsize = 0;
}
int main() {
Heap *h = new Heap;
h->insert(10);
}
Run Code Online (Sandbox Code Playgroud)
使用下标运算符写出其边界时,向量不会自动增长.要插入向量的末尾(增加其大小),请使用以下命令:
heapVec.push_back(Node(d));
Run Code Online (Sandbox Code Playgroud)
也不要使用*(new Node(d)),它不会段错误,但它的内存泄漏.