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...
De loin, ça ressemble à une faiblesse, parceque ça va être dur
d'implémenter une gestion d'exception sur les capacités mémoire.
Haureusement que ça ne concerne que peu d'applis...
C'est peu-être AUSSI un pb. dans la façon dont le compilateur C++ (xlC
dans le cas d'AIX, g++ pour Linux) implémente la fonction "new".
Ce genre de choses ne devrait pas se produire.