概述
目录
- 一、空悬指针
- 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++的空悬指针、野指针一、空悬指针二、野指针所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复