C言語なら俺に聞け(入門編)Part 116

このエントリーをはてなブックマークに追加
360デフォルトの名無しさん
通常の free の話だけじゃなくて
sqlite3_close 内で sqlite3_free が呼ばれるかまで含んだ話だから
free をマクロで置き換えるとかじゃどうしようもない
sqlite3_close の実装が変更できる状況であればソースがあるわけで、
sqlite3_free を呼んでるかはソース読めば分かるわけだし、
最悪分からなくてもログ仕込めばいい

実装を変更できない状況でどうするかとなると、
free や sqlite3_free などの後に実行するとエラーになる処理や
free や sqlite3_free などによるメモリ上の何らかの変化の存在が分かれば、それで判別できる

あとはリバースエンジニアリング、
あるいはライブラリファイル内の free や sqlite3_free などのコードを
ログ出すだけの処理に改竄するとか