delete ptr;后ptr成了"空悬指针",即指向一块曾经保存数据对象但现在已经无效的内存的指针。此时,ptr会在在内存里乱指一通,有可能指到一些重要地址造成出错,因此为了使用的安全,我们一般在delete ptr之后还会加上ptr = nullptr;这一语句使其不指向任何对象。 (二)未置为nullptr后果 #include<iostream>#include<mem...
p***=NULL;//槽函数调用没有固定顺序 } 看http://www.cnblogs.com/liushui-sky/p/5851936.html中 注:我理解调用deletelater (如指针QTcpSocket *p调用p->deletelater();)之后已经把当前的QTcpSocket 对象的内存地址通过this赋值给消息队列了,所以把外部的指针p置为NULL不影响最终对象的delete。 记住:p存放的...
delete 后置为 nullptr 在 C++ 中一般是不必要的,因为 C++ 可以用 RAII 来管理内存,而析构函数是被编译器保证只执行一次的。 不过free 后置为 NULL 在 C 中似乎常常是不可避免的,因为需要用 NULL 来判断状态,不然代码就会写得非常复杂。 最后呢,我的观点: 关于到底什么时候需要置空指针,关键之处在于搞清楚置...
因为 NULL 并不是真正意义上的空指针,只是恰好指向 0 地址的指针。从指针的角度,它依然是一个合法的...
delete操作,绝大部分情况下,都只是在用户态内存管理器动作,而不会到达OS kernel, 也就是说,那段...
delete一个指针之后,只是回收指针指向位置的空间,而指针本身的值不变。你需要手工将其赋值为NULL。另外delete NULL的话不会有任何事情发生。
delete p后,只是释放了指针指向的内存空间。p并不会自动被置为NULL,而且指针还在,同时还指向了之前的地址 delete NULL编译器不会报错(因为delete空指针是合法的) 例: 对一个非空指针delete后,若没有赋NULL,若再次delete的话,有可能出现问题。 如下代码 ...
delete 运算符并不改变指针值,因此,delete后的指针应该手动置为nullptr 这是在写LeetCode 146.LRC缓存时发现的bug,关于那道题(调试了我一个多小时)明天再聊~ 晚安
看了下面的回答,大概看出有这么个可能。如果你不写构造函数,那么那个NULL值就是你这个类本身,因此,...
此时正常的情况就不用说了,说说用NULL对象指针调用成员函数的情况:A *pa = NULL; pa->func(2); ...