不要以为使用 shader_ptr可以避免内存泄漏。下面是一个泄漏的例子
1 | #include <memory> |
由于参数名和成员名一样, 构造函数只是将参数oldSwapchain设置为null,但是成员oldSwapchain依旧保留shared_ptr的引用,参数传入进来的Swapchain会像列表一样存在,他们将会保存到成员的oldSwapchain中,这样就完成了一个隐式内存泄漏,valgrind根本没办法检测出这种内存泄漏,使用shared_ptr切记要注意这些问题,Java也有可能遇到这种问题