archeryue/algo-cpp

发现deque有内存泄露的问题

Opened this issue · 1 comments

deque进行popback和popfront的的时候没考虑到如果存储的类型中含有指针指向的堆内存,这时不仅仅需要减少size,应该还要调用它的析构函数防止内存泄露。但是如果简单的进行析构的话,可能会导致deque析构的时候发生重复析构,因为delete[]会调用申请的这个数组的每个析构函数,应该用这时应该使用::operator delete取代delete将释放内存的过程和析构函数解藕。这样一来,想想突然发现单单申请内存时候与不需要调用到构造函数同样也可以解藕优化,cpp万恶之源😂

是个好问题啊,我研究下。一般pop之前都会调用peek之类的把数据拿走,如果直接析构可能也会有问题。我回头有空的时候去看看成熟的库都是咋实现的。