89

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)

少しグーグルした後、私はここでそれがであることに気づきましたDiagnostic message, mostly for benefit of the Valgrind developers, to do with memory permissions、それは私に多くを教えてくれません。

私のプログラムは、ヒープに大量のメモリを割り当てます。(の束全体の後に2〜3 GBのRAMに達する可能性がありますrealloc

ただし、割り当てが失敗しなかったにもかかわらず、警告が表示されました。

それで、私はこのメッセージが本当に何を意味するのか疑問に思いますか?なんらかのメモリ権限がありませんか?(しかし、割り当ては成功しました)

4

1 に答える 1

91

これは、特に大きなメモリ ブロックでパーミッションが変更されたことを意味します。

これは、 or の呼び出しなどmprotect、非常に大きなメモリの割り当てまたは割り当て解除が発生したときに発生する可能性があります。mmapmunmap

undefinedリストの最初のものは、最初は未定義としてマークされる新しい割り当てである可能性が最も高い約320Mbのメモリを設定しています。他の両方は、noaccessおそらくメモリの割り当て解除に関連する同様のサイズのブロックを設定しています。

于 2012-11-26T09:11:17.670 に答える