J'ai fait des recherches après avoir appris new
contrairement à malloc()
dont j'ai l'habitude, ne renvoie pas NULL en cas d'échec des allocations, et j'ai découvert qu'il y a deux façons distinctes de vérifier si une nouvelle allocation a réussi ou non. Ces deux façons sont :
try
{
ptr = new int[1024];
}
catch(std::bad_alloc& exc)
{
assert();
};
y
ptr = new (std::nothrow) int[1024];
if(ptr == NULL)
assert();
Je pense que les deux méthodes permettent d'atteindre le même objectif (corrigez-moi si je me trompe, bien sûr !), et ma question est donc la suivante :
qui est la meilleure option pour vérifier si new
a réussi, en se basant entièrement sur la lisibilité, la maintenabilité et les performances, tout en ignorant les conventions de programmation de facto du c++.