タグ

2017年10月29日のブックマーク (1件)

  • valgrindが検出するメモリリークの種類 - wagavulin's blog

    C/C++のメモリリークチェックツールと言えばvalgrindが有名だが、メッセージの詳細を日語で説明しているサイトはあまりないようなので調べてみた。 valgrindは、mallocやnewで確保されたメモリ領域がポインタによって辿れるかどうかをチェックすることでメモリリークを検出する。以下の例を見てみよう。 char *g_ptr; void func(){ char *p = new char[32]; // (A) } int main(){ func(); } main関数から始まり、そこからfuncが呼ばれ、現在 (A) の位置にいるとしよう。このとき、メモリ上にはmain関数とfunc関数で定義された変数があり、また、グローバル変数であるg_ptrも有効な状態で存在している。func関数が抜けると変数pは無効になる。 このpやg_ptrのようなデータのことをroot-set

    valgrindが検出するメモリリークの種類 - wagavulin's blog