2012-11-26 28 views
55

私は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) 

私はそれがはるかに私に教えてくれないDiagnostic message, mostly for benefit of the Valgrind developers, to do with memory permissions、あることhereで発見。

私のプログラムは、ヒープに大量のメモリを割り当てます。 (reallocの束の後で2-3GBのRAMに達することができます)

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

このメッセージが実際に何を意味しているのでしょうか?私には何らかの記憶の許可がありませんか? (ただし、割り当てに成功しました)

答えて

53

これは、特に大きなメモリブロックでアクセス許可が変更されたことを意味します。

mprotectの呼び出しや、非常に大きなメモリ割り当てや割り当て解除が発生した場合などに発生する可能性があります。mmapまたはmunmapなどがあります。

最初にリストアップしたのは、約320Mbのメモリをundefinedに設定することです。この割り当ては、最初は未定義としてマークされます。他の人は同様のサイズのブロックをnoaccessに設定しています。おそらくメモリの割り当て解除に関係しています。

+0

です。このことは誰か心配すべきことなのでしょうか? (私は、Valgrindの開発者の利益のためにほとんどそうではないと思っています) –

+8

私は少し答えを広げ、明確にしましたが、基本的には、あなたが心配する必要はほとんどありません。 – TomH

+0

(定義済み) - (noaccess) - (定義済み) - (noaccess) - (定義済み)で終わる5つのエラーをリストするとどうなりますか? –

関連する問題