我是靠谱客的博主 悲凉毛巾,最近开发中收集的这篇文章主要介绍【c++查缺补漏系列】C++的空悬指针、野指针一、空悬指针二、野指针,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

  • 一、空悬指针
      • 1、情况一:
      • 2、情况二:
      • 3、情况三:
  • 二、野指针

一、空悬指针

指向已经被释放的内存 或者 指向已经被销毁的对象。

1、情况一:

{
char *dp = NULL;
{
char c;
dp = &c;
}
//变量c释放,dp变成空悬指针
}

2、情况二:

void func()
{
char *dp = (char *)malloc(A_CONST);
free(dp);
//dp变成一个空悬指针
dp = NULL;
//dp不再是空悬指针
/* ... */
}

当free或者delete调用时,除了释放动态申请的内存,还要将相关的指针指向NULL,避免出现空悬指针

3、情况三:

int * func ( void )
{
int num = 1234;
/* ... */
return #
}

num是基于栈的变量,当func函数返回,变量的空间将被回收,此时获得的指针指向的空间有可能被覆盖。

二、野指针

没有初始化的(非静态)指针就是野指针,一般情况下,编译器会进行警告。

int func()
{
char *dp;
//野指针,没有初始化
static char *sdp; //非野指针,因为静态变量会默认初始化为0
}

参考链接:https://blog.csdn.net/weixin_41565755/article/details/89930702

最后

以上就是悲凉毛巾为你收集整理的【c++查缺补漏系列】C++的空悬指针、野指针一、空悬指针二、野指针的全部内容,希望文章能够帮你解决【c++查缺补漏系列】C++的空悬指针、野指针一、空悬指针二、野指针所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部