OpenWrt用のマルチスレッド キャッシング プロキシを開発しました(ルーター用の Linux のため、利用できる RAM はほとんどありません)。Boost および Curl ライブラリを使用しました。正常に動作しますが、RAM 消費量の増加が止まりません (メモリ リーク)。
- 動的に割り当てられたすべての変数を解放します
- 開いているすべてのファイルを閉じます
- 初期化されたカール ハンドルをクリーンアップする
- グローバル変数は定数です
これが私のメインコードの一部です:
while (true) {
ip::tcp::socket* socket = new ip::tcp::socket(io_service);
acceptor.accept(*socket);
pthread_t thread;
pthread_create(&thread, NULL, handleRequest_thread, (void*) socket);
pthread_detach(thread);
}
メモリリークが「handleRequest_thread」で発生することは確かなので、私の質問は次のとおりです。スレッドが終了した後にすべてのリソース (メモリ、開いているファイルなど) を解放する方法はありますか?