Bonjour,

Je suis entrain d'écrire une fonction qui se charge de faire les allocation mémoire et surtout de les surveiller. Le prototype de cette fonction est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
void mon_malloc(void **Pointer, const size_t Size);
Globalement, cette fonction fait l'action suivante (après un certain nombre de controles)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
...
*Pointer = ::malloc(Size)
...
Par contre, j'ai une difficulté lors de l'appel à cette fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
char *ptr = NULL;
mon_malloc(&ptr, 100);
J'ai une erreur du compilateur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
1>memory.cpp(15) : error C2664: 'mon_malloc'*: impossible de convertir le paramètre 1 de 'char * *__w64 ' en 'void **'
1>        Les types pointés n'ont aucun rapport entre eux*; conversion nécessitant reinterpret_cast, cast de style C ou cast de style fonction
Lors de l'appel, il faut que je fasse un cast
Code : Sélectionner tout - Visualiser dans une fenêtre à part
mon_malloc((void **)&ptr, 100);
pour supprimer cette erreur. Même si je comprends bien le besoin, je me demande, s'il n'y aurait pas une subtilité d'écriture permettant de supprimer ce cast explicite (je ne souhaite pas non plus écrire une fonction surchargée pour chacun des types de pointeurs potentiels)

Merci pour vos réponses