пятница, 12 февраля 2021 г.

Бесконечность - не предел

 Интересный эффект обнаружил. Не могу пока понять - это баг или фича. Но работа с массивами через указатель породила возможность добавить в массив типа [] (массив значений типа Value) указатель на самого себя, и таким образом получается бесконечность.

По этому поводу я добавил бесконечность в синтаксис индексов. Если запрос элемента по индексу даёт в результате массив или указатель на массив, то можно запросить и элемент из этого массива. А из него тоже запросить элемент, если это тоже массив.

Массив, содержащий указатель на самого себя

Работа с указателями порождает настолько заковыристые ошибки, что сегодня был даже момент, когда я чуть было не решил, что всё нужно снова переписывать с нуля. Но я понял, почему возникает ошибка - там было две ошибки у меня, и они порождали такой хаос, что было совершенно непонятно, почему крашится программа.

Оказалось, что я в одном месте забыл убрать оператор delete, и он просто удалял то, что не нужно удалять. А в другом месте старый код запрашивал элемент массива не в массиве, а в данных указателя. Причудливая смесь.

Но вот я всё исправил, и вот - созерцаю бесконечность.

Нужно ещё будет разобраться с таблицей подсчёта ссылок. Что-то там кривизна невероятная с этим у меня. Думаю, что займусь этим, когда работа с указателями сформируется в голове в общую картину.

Комментариев нет: