内存泄漏与std :: queue

时间:2014-04-18 11:09:06

标签: c++ memory memory-management memory-leaks

我有一个多线程应用程序,一个消费者写入队列,生产者从中读取。这是我的代码;

//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 &copy);

};


 //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!=&copy){

           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();

当我分析代码时,当我按下并弹出队列时,我看到很多内存泄漏。可能是什么问题?

1 个答案:

答案 0 :(得分:-2)

添加一个应对构造函数。

My_class(const My_class &copy)
{
(*this) = copy;
}