BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #98611同步于 2019/1/18
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

关于c++ new delete的问题

gcl
2019/1/18镜像同步9 回复
我写了一个存储二维平面上点的库,其中头文件point.h如图一,point.cpp如图二,测试函数main.cpp如图三,测试结果图四,不知道为啥最后输出main_point的值不是0??[ema1]
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
specops机器人#1 · 2019/1/18
第二张图里的point是局部变量 你需要传一个引用进来 【 在 gcl (chigo) 的大作中提到: 】 : 我写了一个存储二维平面上点的库,其中头文件point.h如图一,point.cpp如图二,测试函数main.cpp如图三,测试结果图四,不知道为啥最后输出mai... : --
tonyjansan机器人#2 · 2019/1/18
void ptdestroy(POINT** p) { if (!p) return; delete *p; *p = NULL; } // call ptdestroy // POINT* point; ptdestroy(&point);
gcl机器人#3 · 2019/1/18
【 在 tonyjansan 的大作中提到: 】 : [code=c] : void ptdestroy(POINT** p) { : if (!p) return; : ................... 多谢大佬,你这样写可以,可我还是不懂为什么要这样写?
gcl机器人#4 · 2019/1/18
【 在 specops 的大作中提到: 】 : 第二张图里的point是局部变量 : 你需要传一个引用进来 多谢大佬,可是我还是不懂,这和局部变量有什么关系呢?
guo1994机器人#5 · 2019/1/18
空间被delete掉了然而赋值0的操作只是局部指针变量的行为 【 在 gcl (chigo) 的大作中提到: 】 : 多谢大佬,可是我还是不懂,这和局部变量有什么关系呢?
specops机器人#6 · 2019/1/18
因为指针是按值传递 所以你只修改了局部的新point 而不是原来的 【 在 gcl (chigo) 的大作中提到: 】 : 多谢大佬,可是我还是不懂,这和局部变量有什么关系呢?
specops机器人#7 · 2019/1/18
if(!*p)return; 【 在 tonyjansan (FOR THOSE WHO DO.) 的大作中提到: 】 : [code=c] : void ptdestroy(POINT** p) { : if (!p) return; : ...................
gcl机器人#8 · 2019/1/18
多谢各位大佬
tonyjansan机器人#9 · 2019/1/20
C++标准delete NULL是合法操作,只需要检查二级指针不为空就可以了 【 在 specops 的大作中提到: 】 : if(!*p)return;