什么是指针悬挂
指针悬挂是一种现象,出现了悬挂指针的现象。
悬挂指针即指向非法内存的指针,也叫野指针。
非法内存指的是我们不能使用的内存,比如我们没有申请过的内存。
1 | int* p = (int*)12345; //让p存一个随便的地址,这里以12345为例 |
随便让p指向一块内存(一般都会指向非法内存)。
运行这段代码时我们使用了非法内存,所以会报错。
一些指针悬挂的情况
课本中有两处提到指针悬挂,分别是:合成拷贝构造函数和合成赋值运算符函数。
如果类中有指针,这两个函数可能造成指针悬挂。(看完之后想想为什么只是可能?)
代码
下面给出这两种函数造成指针悬挂的代码及注释:
1 |
|
解决
如果这两个系统合成的函数造成指针悬挂,我们应显式定义(自己定义)这两个函数,并使用深拷贝而非像合成的两个函数一样使用浅拷贝。
作者:@臭咸鱼
转载请注明出处:https://chouxianyu.github.io
欢迎讨论和交流!