Сбой памяти Dr в Visual Studio с "ПРЕДУПРЕЖДЕНИЕ: приложение вышло с ненормальным кодом 0xc0000409"

Я создал класс 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;
}

0 ответов

Другие вопросы по тегам