带有memcpy和std :: queue的内存泄漏

问题描述 投票:1回答:1

我有一个读取大文件并将它们从某个地方复制到某个地方的代码。

首先,我从网络中获取数据并复制到固定大小的缓冲区,即;

fixed_buffer[100000];

然后,每当数据来自网络时,我都会将来自网络的数据复制到它。来自网络的数据总是小于缓冲区大小;

memcpy(fixed_buffer,network_data_buffer,network_data_size);

比我将其复制到具有更大大小的缓冲区

fixed_buffer_2[200000];

memcpy(fixed_buffer_2,fized_buffer,sizeof_fixed_buffer);

比我将fixed_buffer_2推送到std :: queue,然后另一个线程从队列和进程中将其弹出。

所以代码中几乎没有memcpys。我用检漏仪测试了我的代码,并在阶段中看到了这一点:

std::queue.push(fixed_buffer_2);
std::queue.pop();

存在内存泄漏。我对memcpy操作和推送ot队列感到怀疑。如何避免这种情况。这是什么问题?

c++ memory memory-management memory-leaks
1个回答
0
投票

我刚刚遇到了类似的问题。我想将数组中的所有元素推入队列。除了编写一个循环将每个元素一个一个地推入队列之外,还有类似于“ std :: queue.push(fixed_buffer_2);”之类的代码,它可以帮助复制数组中的内容,例如fixed_buffer_2,直接进入队列?非常感谢!

Cris

© www.soinside.com 2019 - 2024. All rights reserved.