结构中的指针内存泄漏?

时间:2010-04-01 15:14:13

标签: memory pointers memory-leaks

我在网上找不到任何提及...不会在结构中添加指针是件坏事吗? (至少在现代面向对象编程中)程序员不可避免地会创建一个内存泄漏正确吗? (除非他们每次使用它,否则每次都会使记忆解除关联)

假设以上是正确的......在结构中使用指针被认为是一种不好的做法吗? - 特别是会计潜在的内存泄漏?

1 个答案:

答案 0 :(得分:1)

假设这是关于C ++的,如果这个指针引用struct实例拥有的对象(或对象数组),那么将一个哑指针放入struct确实很危险(即,实例负责正确删除对象)。

复制struct的实例意味着复制其所有成员。之后,您最终得到了struct的几个实例,这些实例具有指向同一对象的指针。当要删除所有这些实例时,您必须删除指针引用的对象。但是,如果其中一个即将被删除,通常很难判断其他实例是否仍在某处。

这样做的一种方法是引用计数,由聪明的实现构造函数,析构函数和赋值完成。幸运的是,您不需要自己实现它,因为它已经在所谓的智能指针中完成。您的标准库可以提供TR1的std::tr1::shared_ptr,也可以提供C ++ 11的std::shared_ptr,或者您可以下载boost libraries并使用他们的boost::shared_ptr