Что, если я помещу все узлы LinkedList в массив?
Тогда вот где находятся узлы.
Однако программа освобождения памяти этого не делает. t запустить полностью и выйти без ошибок
Есть ли с этим проблемы?
Да, есть проблема.
Проблема в том, что вы можете пройти только указатель на delete
, если вы получили указатель из new
(и он должен быть удален не более одного раза, а если вы создали массив, вы должны использовать delete[]
).
Когда вы это сделаете delete n;
, вы обнаружите, что никогда не назначали какой-либо из n->next
(который будет n
в рекурсивном вызове) иметь значение указателя, которое было возвращено из new
. Как следствие, поведение программы не определено.
Если вы выделяете объекты следующим образом:
Node* n = new Node [k];
, то вы должны освободить место следующим образом:
delete[] n;