Que signifie cet avertissement de Valgrind? – ensemble d’avertissements

Lors de l’exécution de mon programme contre valgrind, j’ai rencontré l’avertissement suivant.

Warning: set address range perms: large range [0x4d59d040, 0x6159d040) (undefined) Warning: set address range perms: large range [0x194f7030, 0x2d4f7050) (noaccess) Warning: set address range perms: large range [0x3959d030, 0x6159d050) (noaccess) 

Après quelques recherches sur Google, j’ai trouvé ici que c’était un Diagnostic message, mostly for benefit of the Valgrind developers, to do with memory permissions , ce qui ne me dit rien.

Mon programme alloue une grande quantité de mémoire sur le tas. (Peut atteindre 2-3 Go de RAM après tout un tas de realloc )

Cependant, l’avertissement est apparu malgré qu’aucune des allocations n’a échoué.

Alors, je me demande ce que signifie vraiment ce message? Je n’ai pas de permission de mémoire? (Mais la répartition a réussi)

Cela signifie simplement que les permissions ont changé sur un bloc de mémoire particulièrement important.

Cela peut se produire à cause de quelque chose comme un appel à mprotect ou quand une allocation ou une désallocation de mémoire très importante se produit – un appel mmap ou munmap par exemple.

Le premier que vous listez définit environ 320 Mo de mémoire à undefined ce qui est probablement une nouvelle allocation, qui sera marquée comme non définie initialement. Les autres mettent tous deux des blocs de taille similaire à noaccess ce qui est probablement lié à une désallocation de mémoire.