[解決済み] このValgrindの警告は何を意味するのですか?- 警告 セットアドレス範囲 パーム
2023-05-05 18:58:26
質問
自分のプログラムを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
であることがわかりますが、これではよくわかりません。
私のプログラムは、ヒープ上に大量のメモリを割り当てます。(大量の
realloc
's)
しかし、いずれのアロケーションも失敗していないにもかかわらず、警告が表示されました。
このメッセージの本当の意味は何なのでしょうか?私は何らかのメモリ権限を持っていないのでしょうか? (ただし、割り当ては成功しました)。
どのように解決するのですか?
特に大きなメモリ ブロックでパーミッションが変更されたことを意味します。
これは、例えば
mprotect
を呼び出したり、非常に大きなメモリの割り当てや解放が発生した場合、つまり
mmap
または
munmap
のような呼び方をします。
最初に挙げたものは、約320Mbのメモリを
undefined
に設定しています。これはおそらく新しいアロケーションで、最初は未定義とマークされるでしょう。他のものは、両方とも同じようなサイズのブロックを
noaccess
に設定しており、これはおそらくメモリの割り当て解除に関連するものです。
関連
-
構造体の配列--[エラー] '['トークンの前に一次式があることが予想される
-
警告:符号付き整数式と符号なし整数式の比較 [-Wsign-compare]
-
[解決済み] C言語でchar配列をコピーする方法は?
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み] C言語における「static」の意味とは?
-
[解決済み] 難読化Cコードコンテスト2006。sykes2.cの解説をお願いします。
-
[解決済み] mallocとcallocの違い?
-
[解決済み] C言語でランダムなint型を生成するには?
-
[解決済み] ポインタの「デリファレンス」とはどういう意味ですか?
-
[解決済み] C言語でオブジェクト指向のコードを書くとしたら、どのようにすればよいのでしょうか?[クローズド]
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
#137: 式は変更可能なlvalueでなければならない問題 // 文字列配列の代入問題
-
C - 添え字の値が配列でもポインタでもベクトルでもないエラー
-
警告: 'struct XXX' はパラメータリストの内部で宣言されています。
-
[解決済み] ⑭と⑯は何のためにあるのですか?
-
[解決済み] Linuxカーネルにおけるcontainer_ofマクロの理解
-
[解決済み] Cプリプロセッサはなぜ "linux "という単語を定数 "1 "と解釈するのですか?
-
[解決済み] ++iとi++の違いは何ですか?
-
[解決済み] 演算子 *, /, +, -, % を使わずに 3 で割る。
-
[解決済み] longをフォーマットするprintfの引数は何ですか?
-
[解決済み] FortranはC言語よりも重い計算を最適化しやすいですか?