我有一个
class
它基本上是
2D matrix
指向另一个对象的指针,矩阵由
vectors
.
由于某种原因,每当我的析构函数
班
正在被呼叫,而且似乎它正在试图
delete
指针即使是
nullptr
,这会导致崩溃。
这是我的
.h
和
.cpp
文件:
cpp文件:
RotationSolution.h
:
#ifndef PUZZLESOLVER_ROTATIONSOLUTION_H
#define PUZZLESOLVER_ROTATIONSOLUTION_H
#include <vector>
#include <fstream>
#include "PuzzlePiece.h"
using namespace std;
class RotationSolution {
private:
int _height, _width;
vector<vector<PuzzlePiece*>> _matrix;
public:
RotationSolution();
RotationSolution(int height, int width);
vector<PuzzlePiece*>& operator[](int row);
int get_height() const;
int get_width() const;
};
#endif //PUZZLESOLVER_ROTATIONSOLUTION_H
旋转解决方案。cpp:
#include "RotationSolution.h"
vector<PuzzlePiece*>& RotationSolution::operator[](int row) {
return _matrix[row];
}
RotationSolution::RotationSolution() : RotationSolution(0, 0) {}
RotationSolution::RotationSolution(int height, int width) :
_height(height), _width(width), _matrix(vector<vector<PuzzlePiece*>>(_height, vector<PuzzlePiece*>(_width, nullptr)))
{}
int RotationSolution::get_height() const {
return _height;
}
int RotationSolution::get_width() const {
return _width;
}
代码实际上在如下部分崩溃:
for (auto length: _rowLengths) {
auto height = size / length;
_sol = RotationSolution(height, length);
...
}
在
_sol = RotationSolution(height, length);
线
调试时,发送碰撞信号的代码来自
new_allocator.h
(我很确定这是一个lib文件):
// __p is not permitted to be a null pointer.
void
deallocate(pointer __p, size_type)
{ ::operator delete(__p); }
我还是新手
c++
因此,请原谅任何noob错误和不良做法:)