하나의 소비자가 큐에 쓰고 프로듀서가 읽는 다중 스레드 응용 프로그램이 있습니다. 여기 내 코드가 있습니다.std :: queue를 사용한 메모리 누출
//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();
코드를 프로파일 할 때 내가 푸시 할 때 메모리 누수가 많이 발생하며 문제가 될 수 있습니까?
'copy.buffer.copysize' 란 무엇입니까? 실제 코드를 게시하는 것이 좋습니다. 또한 할당 연산자를 제공해야하는 것처럼 보이지 않습니다. – juanchopanza
@juanchopanza 실제로 같은 크기입니다. 복사 할당입니다 – barp
메모리 누수가 있는지 확인하기 위해 무엇을 사용하고 있습니까? 당신이 게시 한 코드에서 아무 것도 보지 못한다면 메모리 누수가 발생할 수 있습니다 ('memset'에 사용 된'buffer '는 실제로'my_buffer'라고 가정합니다.) – Lilshieste