如果类有一个静态成员指针变量,在进程中执行new或malloc操作分配了内存,进程退出前并不需要调用new或malloc,因为系统会自动进行释放。但这个静态成员指针变量需要多少分配,又应该如果处理呢,最近在项目代码中看到这样的例子,和大家分享一下。
用valgrind执行,会发现内存泄漏,如下所示,当然,这是很显然的,多次new但没有delete。
valgrind --tool=memcheck --leak-check=full ./a.out
==3893== LEAK SUMMARY:
==3893== definitely lost: 5,242,880 bytes in 5 blocks.
==3893== &

本文探讨了类中静态成员指针如何正确地进行内存分配和释放,通过实例展示了在使用静态指针时可能出现的内存泄漏问题以及解决方案。通过将静态指针赋值给局部指针并进行delete操作,可以避免内存泄漏,同时保持静态指针的值。

2793

被折叠的 条评论
为什么被折叠?



