Що означає це попередження Вальгринда? - попередження встановити діапазон адрес перм


77

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

Після деякого гуглиння я виявив тут, що це Diagnostic message, mostly for benefit of the Valgrind developers, to do with memory permissions, що не говорить мені багато.

Моя програма виділяє великий обсяг пам'яті в купі. (Може досягати 2-3 Гб оперативної пам'яті після того, як цілий букет realloc«s)

Однак попередження з’явилося, незважаючи на те, що жодне з розподілів не провалилося.

Отже, мені цікаво, що насправді означає це повідомлення? Я не маю дозволу на пам’ять? (Але розподіл вдався)

Відповіді:


80

Це просто означає, що дозволи змінилися на особливо великому блоці пам'яті.

Це може статися через щось на зразок виклику mprotectабо коли відбувається дуже велике виділення пам'яті або вивільнення - наприклад, mmapабо munmapвиклик.

Перший із списку - це встановлення близько 320 Мб пам’яті, undefinedщо, швидше за все, є новим виділенням, яке спочатку буде позначено як невизначене. Решта встановлюють блоки подібного розміру, до noaccessяких, ймовірно, відноситься вивільнення пам'яті.


2
Розумію. Це щось, про що слід колись хвилюватися? (Я здогадуюсь не таким, як є mostly for benefit of the Valgrind developers?)
Джиммі Лу

14
Я трохи розширив і уточнив свою відповідь, але в основному, ні, це, як правило, не те, про що вам потрібно турбуватися.
TomH

Що робити, якщо в ньому перелічено п’ять помилок, які закінчуються на: (визначено) - (недоступ) - (визначено) - (немає доступу) - (визначено)?
Адам Хуньяді,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.