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:

Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
#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:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
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 (oui, je sais, c'est beaucoup)...
Quelqu'un a une idée??

(je suis sous debian et je compile avec g++)


sortie de "free -s 0.01":

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
             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
 
CRASH!