何时在C++中删除/取消引用
When to delete/dereference in C++
myObj* var = new myObj;
var = other1;
不再需要它了
delete var;
var = new myObj;
var = other2;
为什么不能取消引用而不是删除并重新分配?
var->other2;
取消引用并不意味着删除:http://en.wikipedia.org/wiki/Dereference
我建议你复习一些C++教程,因为你似乎对很多词汇的实际含义有误解。
记得使用谷歌。
你的问题很傻,绝对没有冒犯的意思。换句话说,你在这里有一个潜在的困惑,这是无法通过简单的调查答案来解决的。
我强烈建议你阅读C或C++的入门材料。网络上充斥着精彩的讲座和免费的电子书。你不会后悔的!
谷歌:(也许,几天后你会回来回答你自己的问题。
编码快乐!
其他人评论了您对术语的困惑。我会评论你的代码。
当你这样做:
myObj* var = new myObj;
var = other1;
你在制造内存泄漏。new myObj
为一个结构分配了内存,并将var
设置为指向那里。然后重新分配var
时,将不再有指向已分配结构的变量。C++没有自动垃圾收集功能,因此此内存不再可访问,但您也没有可以与delete
一起使用的变量来回收它。
var = other1
重新分配指针,它不复制内容;如果你想复制结构,你必须写:
*var = *other1;
当你这样做时:
delete var;
您不是在删除原始结构,而是在删除other
指向的任何结构。只有当该结构是使用new
创建的时,这才有效。
你肯定需要回去复习所有关于C++指针的教学材料。
相关文章:
- C++取消引用指针.为什么会发生变化
- 使用取消引用的指针的多态性会产生意外的结果.为什么?
- 取消引用运算符不能重载
- 在他自己的方法中,有可能将一个对象取消引用到另一个对象吗
- C++ 关于指针取消引用的技术问题
- 没有取消引用/解包对象的标准方法?
- 列表 iter 不取消引用 使用列表进行插入排序
- 在这个函数中是有缺陷的,因为取消引用 null 是无效的,所以我想更改代码
- 取消引用结束指针到数组类型的一个
- 取消引用向量时出现问题
- 取消引用指向整数的指针时获得不同的结果
- C++:取消引用十六进制值,有点语法问题
- C/C++ 取消引用错误:在空检查之前取消引用
- 取消引用后C++空测试
- 立即取消引用unique_ptr
- 如何在不使用临时变量的情况下取消引用返回指针的函数的返回值?
- 取消引用 void 指针以将值分配给结构
- boost_multi_index迭代器取消引用给出常量
- 矢量迭代器不能与 std::shared_ptr<> 取消引用
- C++我们可以取消引用此指针吗?如果是这样,那么如何,如果不是,那为什么?