Что Означает Это Предупреждение 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)
тем не менее, предупреждение появилось, несмотря на то, что ни одно из распределений не удалось.
Итак, мне интересно, что это сообщение действительно означает? У меня нет какого-то разрешения на память? (Но распределение удалось)
1 ответ:
Это просто означает, что разрешения изменен на особенно большой блок памяти.
Это может произойти из-за чего-то вроде вызова
mprotectили когда происходит очень большое выделение памяти или освобождение - anmmapилиmunmapвызов, например.первый, который вы перечисляете, устанавливает около 320 МБ памяти в
undefinedчто, скорее всего, является новым распределением, которое будет помечено как неопределенное изначально. Остальные оба устанавливают блоки одинакового размераnoaccessчто, вероятно, относится к освобождению памяти.
Comments