Bonjour a tous,
j'ai un ennui dans mon application :
j'alloue de grandes quantités de mémoire (>1Go).
j'utilise pour ça des pointeurs de pointeurs de pointeurs...
que j'initialise de cette façon :
L'allocation fonctionne bien ainsi que le travail sur les zones mémoires.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 BYTE *** tab1; this->tab1=new BYTE**[this->nbC]; for(int i=0;i<nbC;i++) { this->tab1[i]=new BYTE*[this->nbImg]; for(int j=0;j<nbImg;j++) { this->tab1[i][j]=new BYTE[this->tailleImg]; memset(this->tab1[i][j],0,this->tailleImg); } }
Je désalloue de la façon suivante :
Mais par la suite, je ne peux plus réallouer de la mémoire supérieure à 1.4Go...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 for(int j=0;j<this->nbc;j++) { for(int i=0;i<this->nbImg;i++) { delete[] this->tab1[j][i]; this->tab1[j][i]=NULL; } delete[] this->tab1[j]; this->tab1[j]=NULL; } delete[] this->tab1; this->tab1=NULL;
un message apparait indiquant "mémoire insuffisante".
pourtant le programme n'est pas arrivé à la limite des 2 Go
Hors mon application doit tourner en boucle et réallouer continuellement de la mémoire....
Un conseil ou une idée sur le probleme?
Edit : coquille "nbImg" corrigé
Partager