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.