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 :

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);
}
}
L'allocation fonctionne bien ainsi que le travail sur les zones mémoires.

Je désalloue de la façon suivante :

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;
Mais par la suite, je ne peux plus réallouer de la mémoire supérieure à 1.4Go...
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é