我有一个多线程应用程序,一个消费者写入队列,生产者从中读取。这是我的代码;
//my_class.h
class My_class{
My_class();
double time;
struct my_struct my_struct;
unsigned char my_buffer[1000];
My_class& operator=(const My_class ©);
};
//my_class.cpp
My_class::My_class(){
my_struct.mem1=30;
my_struct.mem2=100;
//other struct assignments.
time=0.0;
memset(buffer,0xEF,sizeof(buffer));
}
My_class& My_class::operator=(const My_class& copy){
if(this!=©){
my_struct.mem1=copy.my_struct.mem1;
my_struct.mem2=copy.my_struct.mem2;
memcpy_s((void*)buffer,copysize,(void*)copy.buffer,copy.buffer.copysize)
time=copy.time;
}
return *this;
}
主要有队列;
std::queue<My_class> my_queue;
My_class my_class_variable;//Filled somewhere in thread1
//thread1.cpp
My_mutex.lock();
my_queue.push_back(my_class_variable);
My_mutex.unlock();
//thread2.cpp
My_mutex.lock();
my_queue.pop();
My_mutex.unlock();
当我分析代码时,当我按下并弹出队列时,我看到很多内存泄漏。可能是什么问题?
答案 0 :(得分:-2)
添加一个应对构造函数。
My_class(const My_class ©)
{
(*this) = copy;
}