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