我为OpenWrt开发了一个多线程缓存代理(Linux 用于路由器,因此可用的 RAM 很少)。我使用了 Boost 和 Curl 库,它工作正常,但它的 RAM 消耗并没有停止增加(内存泄漏)。
- 我释放所有动态分配的变量
- 我关闭所有打开的文件
- 清理初始化的 curl 句柄
- 全局变量是常量
这是我的主要代码的一部分:
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”,所以我的问题是:有没有办法在线程完成后释放所有资源(内存,打开的文件......)?