悬空指针
悬空的指针是一个指向已经被删除(或释放)的内存位置的指针被称为悬空指针。有三种不同的方式使指针成为悬空指针:
- 通过取消分配内存
- 函数调用
- 当变量超出范围时
虚数指针
虚空指针是一种特定的指针类型—void *
—一个指向存储中的某些数据位置的指针,它没有任何特定的类型。Void
指的是类型。基本上,它所指向的数据类型可以是任何。如果我们把地址char数据类型分配给一个void
指针,它就会变成char
指针,如果是int
数据类型,那么就是int指针,以此类推。任何指针类型都可以转换为一个void指针。因此,它可以指向任何值。下面是关于void指针的一些重要观点:
- void指针不能被取消引用。然而,它可以通过对无效指针进行类型转换来实现。
- 由于缺乏具体的值和大小,在void指针上不可能进行指针运算。
悬空的指针 | 虚空指针 |
---|---|
悬空指针是指在对象从内存中去掉分配时发生的指针,而不修改指针的值。 | 一个无效指针是一个可以指向任何数据类型的指针。 |
悬空的指针指向被删除的对象。 | 一个无效指针可以被分配任何数据类型的地址。 |
悬空的指针通常发生在对象销毁的时候。 | 空白的指针的表示方法与字符类型的指针是一样的。 |
悬空的指针错误只能通过将指针初始化为一个NULL值来避免。 | 一个void指针可以存储任何类型的对象。 |
在C语言中,悬空指针将与free() 函数 |
它也被称为通用指针。 |