L'avantage de reinterpret_cast, c'est qu'il est facile de trouver toutes ses occurrences dans un programme en faisant une simple recherche, contrairement au C-style cast.
Hélas, ce n'est pas toujours celui qui fait des conneries dans un programme qui en subit les corrections. Et nettoyer la merde des autres n'est pas la partie la plus passionnante de notre boulot.
Parce qu'on a sous la main un wrapper RAII standard qui fait delete[], à savoir la spécialisation de unique_ptr pour les tableaux.
Pour faire la même chose avec malloc, c'est plus lourd. Exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 template<class T> struct free_deleter { void operator()(T* p) { if(p) free(p); } }; int main() { std::unique_ptr<char,free_deleter<char>> foo((char*) malloc(4)); if(!foo) return -1; strcpy(foo.get(), "bar"); std::cout << foo.get() << std::endl; return 0; } // Le destructeur de foo fait un free.
Partager