Pointers c++;结构内存泄漏?

Pointers c++;结构内存泄漏?,pointers,Pointers,假设我将内存分配给指向结构的指针: CatStructure * cat; // assume a CatStructure has name and weight 假设我将cat初始化为: cat->name = "pippy"; cat->weight = 100; 如果我保存了对cat->name和cat->weight的引用,我还需要保存对cat的引用吗?换句话说,如果我已经保存了对其成员的引用,是否有必要保存对指向结构的指针的引用不为给定的结构分配内存,它只为您提供一个

假设我将内存分配给指向结构的指针:

CatStructure * cat; // assume a CatStructure has name and weight
假设我将cat初始化为:

cat->name = "pippy";
cat->weight = 100;

如果我保存了对cat->name和cat->weight的引用,我还需要保存对cat的引用吗?换句话说,如果我已经保存了对其成员的引用,是否有必要保存对指向结构的指针的引用不为给定的结构分配内存,它只为您提供一个存储指针引用的位置。我们会说您知道这一点,并且您正在正确地分配内存


每个
必须与相应的
delete
调用匹配,否则将泄漏内存。从技术上讲,如果您正确地保存了对其中一个成员的引用,您可以进行一些指针计算来恢复对结构的引用,但这是不必要的。只需保存指针,以便以后清理。

如果删除该结构,对其指针或成员的任何引用将不再有效。那些无效的指针/引用称为“悬空”。

你是在问是否可以通过
cat->name
cat->weight>获得指向
cat
的指针吗?
@delnan,我不这么认为。我只是好奇,保存指向结构成员的指针的引用而不是指向结构的实际指针是否可以接受。我想唐尼回答了我的问题——“不。”聪明的指针数学可以避免在垃圾收集周围保留适当的引用(如果你有),当然也会让泄漏检测器抱怨很多。