別のCの質問:
タイプのポインタメンバーを持つ構造体があるとしましょうchar*
。
構造体のインスタンスを初期化したいときは、次のように呼び出しますmalloc
。
MyStruct* ptr = (MyStruct*)malloc(sizeof(MyStruct)
char*
次に、メンバーに256バイトのメモリを割り当てます。
ptr->mem = (char*)malloc(sizeof(char)*256);
呼び出したときにポインタメンバーとそれが指すメモリは
どうなりますfree(ptr);
か?valgrindでプログラムをチェックすると、メモリリークが発生していることがわかりますが、明示的に呼び出すfree(ptr->member);
と、メモリリークが発生し、valgrindに「無効な空き」エラーが表示されます。
メンバーが指すメモリを管理する適切な方法は何ですか?