Allocation, désallocation et gestion de la mémoire sous Windows avec ensemble de points d’arrêt

J’ai une application C ++ avec un phénomène très étrange.

J’exécute mon application sur une grande entrée et j’ai plusieurs tampons qui sont alloués et désalloués au cours de l’exécution.

Pour une entrée suffisamment importante, j’ai une erreur d’allocation, c’est-à-dire une perte de mémoire.

Mais lorsque je mets un point d’arrêt sur chaque allocation, puis que je l’exécute de l’allocation à l’allocation, mon application ne se bloque pas.

Mon hypothèse est que cela doit être lié à la manière dont Windows XP gère la mémoire. Est-ce que quelqu’un a une idée de ce qui peut causer ce phénomène, et comment le dépasser?

Merci.

Une allocation et une désallocation fréquentes peuvent entraîner une fragmentation de la mémoire. J’imagine que lorsque vous parcourez le programme avec un débogueur, le système d’exploitation se désactive pour défragmenter la mémoire. Pour éviter le problème lors de l’exécution normale de votre programme, vous devez considérer memory / object-pool (voir ici et ici ).

Le comportement de l’application est différent dans les exécutions Release et Debug. Comme vous le dites normalement, Out of Memory ne correspond pas à votre code. On peut dire qu’il n’y a pas de mémoire ou pas de mémoire continue.

Vous pouvez utiliser des parsings de code statiques ou dynamics pour identifier le problème.
Purificateur IBM (version d’essai)