計測器で検出するとメモリリークが発生しました。私はメモリ管理についてあまり経験がないので、この問題の考えられる原因は何かわかりません。メモリ リークは次のとおりです。
この種のメモリ リークについて考えられる理由を知りたいです。手がかりを教えてくれる人はいますか?
計測器で検出するとメモリリークが発生しました。私はメモリ管理についてあまり経験がないので、この問題の考えられる原因は何かわかりません。メモリ リークは次のとおりです。
この種のメモリ リークについて考えられる理由を知りたいです。手がかりを教えてくれる人はいますか?
strdup
はmalloc
内部で使用するため、編集されたものはすべて をstrdup
使用して解放する必要がありますfree
。
例えば:
char *duplicate = strdup("abcdef");
...
free(duplicate);
strdup()
はライブラリ関数であるため、コード内にある呼び出し元が見つかるまでバックトレースに戻る必要があります。そこでは、メモリが割り当てられる結果となるライブラリ呼び出しが見つかります。プログラムの他の場所に、対応する解放呼び出しが必要です。
(解放関数は、必ずしも直接呼び出しであるとは限りませんfree()
。たとえば、getaddrinfo()
ライブラリ関数を呼び出す場合、対応する解放関数は ですfreeaddrinfo()
)。