A problem about memory leak
Author: Emen-cCreated Feb 13, 2023Updated Mar 1, 2024
I write code like this:
struct thv
{
long l[1024];
};
void thcall(vector<thv> l)
{
usleep(10 * 1000);
}
int main(int, char **)
{
ThreadPool thpool(12);
vector<thv> v;
vector<future<void>> res;
for (int i = 0; i < 1000; i++)
{
v.push_back(thv());
}
for (int i = 0; i < 1000; i++)
{
res.push_back(thpool.enqueue(thcall, v));
usleep(10 * 1000);
}
for (auto &it : res)
{
it.get();
}
vector<thv>().swap(v);
cout << v.capacity() << endl;
cout << "----------end----------" << endl;
std::getchar();
}when terminal printf
0 ----------end----------
I notice this demo used about 8G memory.
I run this code in ubuntu using ARM cpu and compiled with gcc 9.4.0. what coused this problem? It had serious impacts on my program.
Thanks very much
Source: progschj/ThreadPool