lu,
en essayant d'allouer et de désallouer de la memoire dans une TForm (VCL donc) je tombe sur une exception std::bad_alloc.
En farfouillant, je n'ai pas trouvé la cause, j'ai donc créé un projet console sans la VCL et la ça passe nikel.

J essaye d'allouer 100 M dans la memoire (environ) et je crée 2 unsigned char que je ne supprimerai qu'à la fin du test.
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
 
unsigned char *truc = NULL,**truc2 = new unsigned char*[100000];
 
    for(int x=0; x<100000; x++)
    {
      try
      {
        truc  = new unsigned char[100000000];
 
        truc2[x] = new unsigned char[2];
 
        delete[] truc;
        truc = NULL;      
      }
      catch(...)
      {
        int bidul = 2;
      }
    }
 
    for(int x=0; x<100000; x++)
 
    {
     delete[] truc2[x];
    }
 
    delete[] truc2;
l'erreur se produit vers la 21 allocation de <<truc>> chez moi.

Si vous avez une explication, je suis preneur.