Mon ordinateur dispose de 8 Go de RAM et exécute Windows Server 2008. malloc/realloc() ne parvient pas à allouer plus de mémoire lorsque mon application a déjà 1,5 ~ 1,7 Go déjà alloués. J'ai essayé de passer à HeapAlloc/HeapRealloc à la place et la même situation se produit.realloc/HeapRealloc échoue bien que suffisamment de mémoire est disponible
Y a-t-il quelque chose qui me manque ici? Qu'est-ce qui pourrait empêcher mon application d'allouer plus de mémoire quand il y a de la mémoire vive disponible?
Combien de mémoire essayez-vous d'acquérir? Est-ce que votre application est une version 32 bits ou 64 bits? – thkala
Windows est 64Bit et mon application est 32Bit. Il est peu probable que ce soit un problème de fragmentation, puisque la dernière fois que je l'ai débogué, il a échoué en essayant de réallouer ~ 7 Mo de morceau dans ~ 9 Mo morceau, et la mémoire libre est d'environ 5 Go. –
Par libre meory vous voulez dire RAM? Au lieu de voir la RAM libre disponible, vous devez voir l'espace libre contiguos le plus grand disponible dans votre espace d'adressage virtuel. Si elle est inférieure à la mémoire que vous demandez, l'allocation échouera. Cela est dû principalement à la fragmentation du tas. – Naveen