Re: [HS] mauvaise gestion mémoire sous Linux
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
Reply to: