On Friday 24 August (18:08), Aurélien Campéas wrote: >Le programme C++ suivant : > >#include <iostream> > >int main () >{ > long taille; > int * pint; > int nbloc; > cout<<"Taille de bloc : "; > cin>>taille; > for (nbloc = 1; ; nbloc++) { > pint = new int[taille]; > if (pint) > cout<<"Alloc bloc n°"<<nbloc<<endl; > else { > cout<<"Alloc impossible"; > break; > } > } >} > >...engendre invariablement le message "Alloc impossible" sous AIX, >qqsoit la taille de bloc, lorsque le système a épuisé les ressources >mémoire. >Sous Linux, en fonction de la taille de bloc demandée, on a un message >"Abort" >ou bien >"Segmentation fault" >mais JAMAIS "Alloc impossible"... > >Ca m'a vraiment surpris quand je l'ai découvert...
Le new du C++ n'a pas le meme comportement que le malloc du C: Quand la mémoire est pleine, il lève par défaut une exception 'bad_alloc' (definie dan <new>). Tester la valeur de retour n'a donc aucun sens puisque l'affectation du pointeur n'est pas effectuée en cas de dépassement de capacité. Et ca marche bien sous linux! :) :) François Delobel