我创建了一个 Node 类并尝试使用 C++ 实现一个简单的树形结构。我测试了代码,Visual Studio 能够编译并输出预期的结果。但是,当我尝试 Dr Memory 检查内存泄漏时,Dr Memory 总是在某些点崩溃,包括:1)在 Node 类构造函数中“col = vec[0].size()” 2)在距离函数中“col = vec[0].size()"
如果我保留这些行,Visual Studio 可以编译并输出正确的东西,但是,Dr Memory 崩溃......如果我评论这些行,Dr Memory 工作......所以我很困惑哪一部分出了问题,是节点堆?还是向量?或内存博士...谢谢
// node class
class Node {
public:
vector<vector<int>> board;
int row;
int col;
Node(vector<vector<int>> &vec): board(vec) {
row = vec.size();
col = vec[0].size();
}
Node(Node *&node): board(node->board) {}
};
// calculate distance
int distance(v2_i &vec) {
int ans = 0;
int row = vec.size();
int col = vec[0].size();
for(int i=0; i<row; i++) {
for(int j=0; j<col; j++) ans += abs(vec[i][j]-(i*row+j+1));
}
return ans;
}
// main function
int main() {
vector<vector<int>> startBoard = input_txt();
Node *node_1 = new Node(startBoard);
Node *node_2 = new Node(node_1);
cout << distance(node_2->board) << endl;
delete node_1;
delete node_2;
return EXIT_SUCCESS;
}