提问人:Pacou 提问时间:9/14/2023 更新时间:9/14/2023 访问量:70
Rocky Linux 8.8:在启动之前执行动态分配时线程中的内存泄漏
Rocky Linux 8.8: memory leak in threads when dynamic allocations are performed before they are launched
问:
在 Rocky Linux 8.8(也是 9.2)中,您是否曾经在启动线程之前执行动态分配时遇到过内存泄漏问题? 请参阅下面的代码
如果在相同的代码(测试,不干净)中,我不进行动态分配或较小的分配,则没有内存泄漏。 使用 top、htop,在一段时间内(20 分钟、1 小时),根据计算机上可用内存的大小,没有观察到内存泄漏,然后内存突然增加,直到达到上限。
请注意,此源不会在 Ubuntu 18.4 上导致内存泄漏。
多谢
#include <iostream>
#include <thread>
bool g_stop = false;
void* func(const int id) {
std::cout << "Start of thread " << id << std::endl;
while(!g_stop)
{
std::this_thread::sleep_for(std::chrono::milliseconds(500));
std::cout << "Wait for thread " << id << std::endl;
}
std::cout << "End of thread " << id << std::endl;
return nullptr;
}
#define MAX_BUFFER_SIZE 65535
int main()
{
///////////// Wihtout this dynamic allocation no memory leak
for(int i = 0; i < 6000; ++i)
{
new char[MAX_BUFFER_SIZE];
}
for(int i = 0; i < 3; ++i)
{
std::thread* pt = new std::thread(func,i+1);
}
std::cout<< "Press key to stop threads" << std::endl;
char c;
std::cin >> c;
g_stop = true;
std::cout<< "Press key to exit" << std::endl;
std::cin >> c;
return 0;
}
使用 top、htop,在一段时间内(20 分钟、1 小时),根据计算机上可用内存的大小,没有观察到内存泄漏,然后内存突然增加,直到达到上限。
答: 暂无答案
评论