MyTinySTL icon indicating copy to clipboard operation
MyTinySTL copied to clipboard

不调用destory直接调用deallocate会造成内存泄漏吗

Open longintlong opened this issue 3 years ago • 2 comments

https://github.com/Alinshans/MyTinySTL/blob/8d88c6e41590e49fb91782711f78d8ab1d5e88e4/MyTinySTL/vector.h#L727 这里如果异常释放新内存,不调用destory直接调用deallocate感觉会造成内存泄漏 data_allocator::destory(newStart, newFinish); data_allocator::deallocate(newStart, newCapacity);

longintlong avatar Oct 04 '21 09:10 longintlong

allocate() -> operator new 用来申请内存 construct() -> placement new 用来调用类 T 构造函数 T() 初始化对象 destroy() -> 调用类 T 析构函数 ~T() deallocate() -> operator delete 删除对象并释放对应内存

所以,不会内存泄漏:smile:

HamsterCoderSim avatar May 30 '22 03:05 HamsterCoderSim

allocator::deallocate就是调用::operator delete(),并没有调用析构函数,如果类里new了对象的话,应该会内存泄露

senvenseaNana7mi avatar Aug 19 '22 06:08 senvenseaNana7mi