我有这个非常简单的虚拟程序
levenshteindb.h:
#ifndef LEVENSHTEINDB_H
#define LEVENSHTEINDB_H
#include <QVector>
#include "levenshteindbnode.h"
class LevenshteinDB
{
unsigned size;
QVector<LevenshteinDBNode> nodes;
void realloc_rows(unsigned node);
public:
LevenshteinDB();
~LevenshteinDB();
void add_word();
};
#endif // LEVENSHTEINDB_H
levenshteindb.cpp:
#include "levenshteindb.h"
#include <cstring>
#include <cstdio>
LevenshteinDB::LevenshteinDB()
{
size=15;
nodes.append(LevenshteinDBNode(size));
}
LevenshteinDB::~LevenshteinDB()
{
}
void LevenshteinDB::add_word()
{
nodes.append(LevenshteinDBNode(size));
}
void LevenshteinDB::realloc_rows(unsigned newsize)
{
for(unsigned i=0;i<nodes.size();i++)
nodes[i].realloc(newsize);
}
levenshteindbnode.h:
#ifndef LEVENSHTEINDBNODE_H
#define LEVENSHTEINDBNODE_H
struct LevenshteinDBNode
{
LevenshteinDBNode();
LevenshteinDBNode(unsigned size);
~LevenshteinDBNode();
unsigned *row;
void realloc(unsigned newsize);
};
#endif // LEVENSHTEINDBNODE_H
levenshteindbnode.cpp:
#include "levenshteindbnode.h"
LevenshteinDBNode::LevenshteinDBNode(){};
LevenshteinDBNode::LevenshteinDBNode(unsigned size)
{
row = new unsigned[size];
}
LevenshteinDBNode::~LevenshteinDBNode()
{
delete[] row;
}
void LevenshteinDBNode::realloc(unsigned newsize)
{
delete[] row;
row=new unsigned[newsize];
}
主.cpp:
#include "levenshteindb.h"
int main()
{
LevenshteinDB *trie = new LevenshteinDB();
trie->add_word();
trie->add_word();
trie->add_word();
delete trie;
}
崩溃并且似乎有一个巨大的(与程序本身分配的内存相比)内存泄漏,但我真的不明白出了什么问题..我使用的是 qt 5.2