динамически? Это возможно сделать? Я не знаю 😔
ну вплоть до подстановки проверок и вызовов абортов при компиляции
А как понять, что нужно паниковать?
c: *ptr; пойдёт в другой язык как: if (ptr == NULL) throw NULL_EXC; *ptr
а если бы компилировать не из сишки, а из крестов, то можно жёстче: можно сделать умный компилятор, который будет детектить проверку на nullptr, и разрешать компилить, а если её не находит, то запрещать. Ссылок не будет касаться
Ещё можно добавить всякий dataflow анализ, чтобы не проверять повторно, если не нужно, но это дорого как в компиляции, так и в выполнении.
можно просто кидать ошибку компиляции при подозрении ,что может быть разыменован NULL
Но это же будет раст
нет, в расте ты ещё не можешь брать мутабельные ссылки
Так нулл-то понятное дело. Но может же прийти что угодно с любым лэйаутом. Как понять, что тебе подсунули то, что ты ожидал?
null - это самый примитивный случай
Это было бы не так, если бы borrow checker не выдавал false positive
Обсуждают сегодня