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)
いくつかのグーグル検索の後、 here でDiagnostic message, mostly for benefit of the Valgrind developers, to do with memory permissions
、それはあまり私に教えてくれません。
私のプログラムはヒープ上に大量のメモリを割り当てます。 (realloc
'sの束全体の後、2〜3 GBのRAMに到達できます)
ただし、割り当てに失敗したにもかかわらず警告が表示されました。
だから、私はこのメッセージが本当に何を意味するのだろうか?なんらかのメモリ許可がありませんか? (ただし、割り当ては成功しました)
これは、特に大きなメモリブロックで権限が変更されたことを意味します。
これは、mprotect
の呼び出し、または非常に大きなメモリ割り当てまたは割り当て解除が発生した場合(たとえば、mmap
またはmunmap
呼び出し)に発生する可能性があります。
最初にリストするのは、約320MBのメモリをundefined
に設定することです。これは新しい割り当てである可能性が高く、最初は未定義としてマークされます。他は、同様のサイズのブロックをnoaccess
に設定していますが、これはおそらくメモリの割り当て解除に関連しています。