рано или поздно мы написали бы ptr = ...
2) теряю ли я что-то если напишу int* array = malloc(...) вместо int* array = (int*) malloc(...)?
2) В первом случае не скомпилиться. А ещё так лучше не писать и использовать new
1) ты уверен, что ptr = ... где-то выполниться? Вдруг оно под условием, которое может не выполниться?
Не понял, если нормальный код написать, то да, выполнится
А потом код поменяют и не выполнится. А в начале указатель никак не инициализирован.
Это страховка от отстрела ноги, в общем. Чтобы можно было хоть как-то проверять, что у нас в указателе лежит не то, что нужно
Это бывает проблемно отследить, если программа большая?
Что отследить? Что в указатель положат что-то корректное? Зачем создавать себе эти проблемы с отслеживанием, если можно просто инициализировать указатель? В чем проблема написать = nullptr?
Ну, я ещё не сталкивался, чтобы были проблемы с отслеживанием
С таким подходом не инициализации можно попасть на такую подлянку: int *ptr1, *ptr2; /* много кода */ ptr1 = ptr2; // Вроде все отслежено, в ptr1 присвоено значение. Только упс...
Да, это бывает очень проблемно отследить. Примерно по причине того, что это, фактически, не отслеживается, стараются и сырые указатели не использовать
Обсуждают сегодня