我所做的就是构造一个BNode对象。调试器说构造函数导致分段错误。有谁知道这里的问题是什么? 我所做的就是构造一个BNode对象。调试器说构造函数导致分段错误。有谁知道这里的问题是什么?
#ifndef BTree_H
#define BTree_H
#include <iostream>
#include <fstream>
#include <cctype>
#include <string>
#include <sstream>
#include <cmath>
using namespace std;
template <typename T>
class BNode
{
public:
BNode();
BNode(int M);
~BNode();
int keyCount;
BNode *pointers;
T *keys;
};
template<typename T>
BNode<T>::BNode()
{
}
template<typename T>
BNode<T>::BNode(int M)
{
pointers = new BNode<T>[M];
keys = new T[M - 1];
}
template<typename T>
BNode<T>::~BNode()
{
delete[] pointers;
delete[] keys;
}
#endif
int main()
{
BNode<int> obj(5);
return 0;
}
答案 0 :(得分:0)
您正在删除pointers
和keys
的数组,而您从未将它们定义为数组。
这两个都是 指针 。
你需要从指针中释放内存,而不是数组。
试试这个: -
delete myPointer;
myPointer = NULL;
注意:如果您使用的是C ++,请阅读智能指针。它们会派上用场!