Информация об изменениях

Сообщение Re: POD vs delete [] от 24.06.2016 9:10

Изменено 24.06.2016 9:20 VTT

new->malloc, delete[]->free — это крайне грубые ошибки.
Сегодня вы знаете где POD, а завтра кто-то заменит этот POD на не POD и вы все вместе сядите в лужу.
Освобождающий память метод всегда должен соответствовать методу, выделившему ее, так что диагностика однозначно полезная.

А вот кусок
std::shared_ptr<int> ss(new int[decks * 52], std::default_delete<int[]>());

даже не соберется, так как не все параметры шаблона указаны, надо либо так
std::shared_ptr<int, std::default_delete<int[]> > ss(new int[decks * 52], std::default_delete<int[]>());

либо более лаконично
std::shared_ptr<int[]> ss(new int[decks * 52]);

На скорость компиляции это все никаким заметным образом не влияет.
Хотя страдальцам, у которых все часами компилируются, будет не легче.
Re: POD vs delete []
new->malloc, delete[]->free — это крайне грубые ошибки.
Сегодня вы знаете где POD, а завтра кто-то заменит этот POD на не POD и вы все вместе сядите в лужу.
Освобождающий память метод всегда должен соответствовать методу, выделившему ее, так что диагностика однозначно полезная.

На скорость компиляции это все никаким заметным образом не влияет.
Хотя страдальцам, у которых все часами компилируются, будет не легче.