Une partie de mon code utilise toujours malloc
au lieu de new
. La raison en est que j'ai peur d'utiliser new
car il émet une exception, plutôt que de renvoyer NULL
, que je peux facilement vérifier. Envelopper chaque appel à new
dans un try{}catch(){}
n'a pas l'air aussi bien. Alors que lorsque vous utilisez malloc
je peux simplement faire if (!new_mem) { /* handle error */ }
.Est-il possible d'utiliser des pointeurs intelligents C++ avec malloc?
Par conséquent, j'ai une question. Puis-je utiliser des pointeurs intelligents avec malloc
?
Quelque chose comme:
SmartPointer<Type> smarty = malloc(sizeof(Type));
Quelque chose comme ça.
Est-ce possible?
Merci, Boda Cydo.
Si vous voulez que new lance maintenant une exception et renvoie simplement NULL, vous pouvez utiliser: Type * bla = new (std :: nothrow) Type() ;. Je pense qu'il est préférable d'utiliser std :: nothrow que malloc puisque le dernier n'appelle pas le constructeur. –
Qu'allez-vous faire dans le code de gestion des erreurs pour compenser l'absence de mémoire? Habituellement, le test est si l'alloc a travaillé alors faire du travail. Si elle a échoué, quittez avec un code d'erreur (qui est un moyen compilé de passer le contrôle de la pile). –