Salut!
Je débute en c++ et j'ai le problème suivant:
je veux exécuter un prog qui crée une matrice de "double" de dimension 20000 x 20000:
#include <iostream>
using namespace std;
int main(){
cout<<"size of double: "<< sizeof(double)<<endl;
double** Matrix=new double*[20000];
for (int i=0; i<20000; i++) Matrix[i]=new double[20000];
}
Quand je lance le prog, j'obtiens la sortie suivante:
size of double: 8
terminate called after throwing an instance of 'std::bad_alloc'
what(): St9bad_alloc
Aborting
Si je tape la commande linux "free -s 0.01" pendant l'exécution du prog, je remarque que la mémoire physique diminue pratiquement jusque zéro puis que le prog s'arrête. Je ne comprends pas pourquoi il ne continue pas à tourner en utilisant les 18 GB de mon swap...
Quelqu'un a une idée??
(je suis sous debian et je compile avec g++)
sortie de "free -s 0.01":
total used free shared buffers cached
Mem: 516692 437852 78840 0 40244 190016
-/+ buffers/cache: 207592 309100
Swap: 17757076 112 17756964
total used free shared buffers cached
Mem: 516692 445044 71648 0 40244 190016
-/+ buffers/cache: 214784 301908
Swap: 17757076 112 17756964
total used free shared buffers cached
Mem: 516692 455088 61604 0 40244 190016
-/+ buffers/cache: 224828 291864
Swap: 17757076 112 17756964
total used free shared buffers cached
Mem: 516692 467364 49328 0 40244 190016
-/+ buffers/cache: 237104 279588
Swap: 17757076 112 17756964
total used free shared buffers cached
Mem: 516692 476788 39904 0 40244 190016
-/+ buffers/cache: 246528 270164
Swap: 17757076 112 17756964
total used free shared buffers cached
Mem: 516692 489064 27628 0 40244 190016
-/+ buffers/cache: 258804 257888
Swap: 17757076 112 17756964
total used free shared buffers cached
Mem: 516692 499604 17088 0 40244 190016
-/+ buffers/cache: 269344 247348
Swap: 17757076 112 17756964
total used free shared buffers cached
Mem: 516692 510564 6128 0 40240 188996
-/+ buffers/cache: 281328 235364
Swap: 17757076 112 17756964