我有一个代码可以读取大文件并将它们从某个地方复制到某个地方。
首先,我从网络中获取数据并复制到固定大小的缓冲区;
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队列。我怎么能避免这种情况。问题是什么?