Что Означает Это Предупреждение Valgrind? - предупреждение установить диапазон адресов завивки



когда я запускал свою программу против valgrind, я столкнулся со следующим предупреждением.



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)


после некоторого googling я нашел в здесь что это Diagnostic message, mostly for benefit of the Valgrind developers, to do with memory permissions, что мне мало о чем говорит.



моя программа выделяет большой объем памяти в куче. (Может достигать 2-3 ГБ оперативной памяти после целой кучи realloc ' s)



тем не менее, предупреждение появилось, несмотря на то, что ни одно из распределений не удалось.



Итак, мне интересно, что это сообщение действительно означает? У меня нет какого-то разрешения на память? (Но распределение удалось)

690   1  

1 ответ:

Это просто означает, что разрешения изменен на особенно большой блок памяти.

Это может произойти из-за чего-то вроде вызова mprotect или когда происходит очень большое выделение памяти или освобождение - an mmap или munmap вызов, например.

первый, который вы перечисляете, устанавливает около 320 МБ памяти в undefined что, скорее всего, является новым распределением, которое будет помечено как неопределенное изначально. Остальные оба устанавливают блоки одинакового размера noaccess что, вероятно, относится к освобождению памяти.

Comments

    Ничего не найдено.