Bonsoir,
Est-ce que:
MyClass* ptr = (MyClass*)malloc(sizeof(MyClass));
ptr->MyClass(param1, param2);
et
MyClass* ptr = new MyClass(param1, param2);
sont équivalents?
Oui sauf que on ne doit pas faire un delete sur une mémoire allouée par malloc, et inversement, il ne faut donc pas confondre malloc et new.
Pour faire ce que tu veut, on utilise habituellement le placement new:
MyClass* ptr = new(MonAllocateur(sizeof(MyClass))) MyClass(param1, param2);
Donc je voudrais un truc du genre
MyClass* ptr = MY_NEW MyClass(param1, param2);
dans l'idéal
ou peut être de manière plus réaliste
MyClass* ptr = MY_NEW(MyClass, param1, param2);
On peut faire quelque chose comme ca:
1 2 3 4
|
#define MY_NEW(T) new(MonAllocateur(sizeof(T))) T
MyClass* ptr = MY_NEW(MyClass)(param1, param2); |
Cela dit cette méthode n'est pas recommandée, d'une part car elle utilise des macro, mais aussi parque tu risque de faire un delete normal sur un objet alloué avec autre chose qu'un new.
La meilleur solution a mon avis, est de surcharger les new et delete spécifique de tes classe concernée.
Partager