📜  悬空指针和空指针的区别

📅  最后修改于: 2021-09-12 10:59:10             🧑  作者: Mango

悬空指针指向已被删除(或释放)的内存位置的指针称为悬空指针。 Pointer 可以通过三种不同的方式充当悬空指针:

  • 通过释放内存
  • 函数调用
  • 当变量超出范围时

空指针空指针是一种特定的指针类型 – void * – 指向存储中某个数据位置的指针,它没有任何特定类型。空是指类型。基本上,它指向的数据类型可以是任何类型。如果我们将地址char数据类型分配给一个void指针,它就会变成一个char指针,如果是int数据类型,那么就是int指针,依此类推。任何指针类型都可以转换为空指针。因此,它可以指向任何值。以下是有关 void 指针的一些要点:

  • void 指针不能取消引用。但是,它可以使用类型转换 void 指针来完成
  • 由于缺乏具体的值和大小,无法对 void 指针进行指针运算。

悬空指针和空指针之间的表格差异

Dangling Pointer

Void Pointer

A dangling pointer is a pointer that occurs at the time when the object is de-allocated from memory without modifying the value of the pointer. A void pointer is a pointer that can point to any data type.
It points to the deleted object. A void pointer can be assigned the address of any data type.
It usually occurs at the object destruction time. The representation of a pointer to the void is the same as the pointer of the character type.
Dangling pointer errors can only be avoided just by initializing the pointer to one NULL value. A void pointer can store an object of any type.
The dangling pointer will be with a free() function in C. It is also called a general-purpose pointer.
想要从精选的视频和练习题中学习,请查看C 基础到高级C 基础课程