void* 指针、NULL指针、零指针、野指针、悬垂指针

原文链接:http://www.jianshu.com/p/2062bf912a59


void* 类型指针:通用变体类型指针;可以不经转换,赋给其他指针,函数指针除外;malloc返回的就是void*类型。

NULL指针:是一个标准规定的宏定义;#define NULL ((void *) 0)      用来表示空指针常量;

零指针:指针值为0,零值指针,没有存储任何内存地址的指针;可以使任意一种指针类型,eg:void * ;int * ;double *;

空指针:指针赋值为0;0*7;3-3等之后,指针即变成空指针;即:空指针不指向任何实际的对象或者函数;NULL指针和零指针都是空指针。

野指针:指向垃圾内存的指针;(1)指针变量没有初始化(2)指针被delete或者free之后没有置为空(3)指针操作超越了变量的范围。【注:使用没有被初始化的指针(野指针)的结果是未定义的。】


在vc的debug模式下,对于未初始化的栈内存全部填成0xcc,对应于MBCS编码中汉字字符串看就是烫烫烫烫;对于未初始化的队内存全部填成0xcd,对应于汉子字符串看就是屯屯屯屯;release模式下直接就是内存中随机的数据。


原文没有提到悬垂指针Dangling pointer:悬垂指针指向曾经指向的对象所在的内存,但是该内存空间上的对象已经被销毁而不复存在,但是指针的值依然是原来的地址。

悬垂指针出现原因:对象被销毁了,内存被释放了,但是指针的值没有被重新赋值。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值