野指针相关概念

作者: 奥斯特洛司机 | 来源:发表于2019-03-21 20:57 被阅读0次

野指针主要是因为这些疏忽而出现的删除或申请访问受限内存区域的指针。

指针变量未初始化

任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。如果没有初始化,编译器会报错“ ‘point’ may be uninitializedin the function ”。

指针释放后之后未置空

有时指针在free或delete后未赋值 NULL,便会使人以为是合法的。别看free和delete的名字(尤其是delete),它们只是把指针所指的内存给释放掉,但并没有把指针本身干掉。此时指针指向的就是“垃圾”内存。释放后的指针应立即将指针置为NULL,防止产生“野指针”。

指针操作超越变量作用域

不要返回指向栈内存的指针或引用,因为栈内存在函数结束时会被释放。示例程序如下:

class A {

public``:

void Func(``void``){ cout << “Func of ``class A” << endl; }

};

class B {

public``:

A *p;

void Test(``void``) {

A a;

p = &a; ``// 注意 的生命期 ,只在这个函数Test中,而不是整个class B

}

void Test1() {

p->Func(); ``// p 是“野指针”

}

};

|

函数 Test1 在执行语句 p->Func()时,p 的值还是 a 的地址,对象 a 的内容已经被清除,所以 p 就成了“野指针” 。

相关文章

  • 野指针相关概念

    野指针主要是因为这些疏忽而出现的删除或申请访问受限内存区域的指针。 指针变量未初始化 任何指针变量刚被创建时不会自...

  • iOS assign,weak,strong等属性和引用计数

    先介绍指针相关的几个概念(看有的书上介绍下面的未初始化的叫野指针,野指针叫悬空指针,可能和其它平台理解有所差异,但...

  • Day5

    学习内容:指针的概念与应用收获: 了解了内存的相关概念; 了解了指针的相关概念; 了解了指针变量的使用; 了解了字...

  • OC语言day05-04野指针和空指针

    pragma mark 野指针和空指针 pragma mark 概念 pragma mark 代码 Person....

  • 野指针

    概念:野指针指指向一个已删除的对象或未申请访问受限内存区域的指针。与空指针不同,野指针无法通过简单地判断是否为NU...

  • 僵尸对象,野指针(概念问题)

    不小心看到的一个面试题解释将是对象和野指针的问题。(本着不误人子弟的想法给出的概念) 僵尸对象: 指的是一个已经被...

  • 什么是野指针?什么是僵尸对象?

    野指针与僵尸对象 1. 野指针 1>C语言中的野指针:一个指针变量指向一块随机的空间,这个指针就是野指针当我们声明...

  • 空指针和野指针

    1、什么是空指针,什么是野指针 2、野指针的危害

  • iOS监控-野指针定位

    iOS监控-野指针定位 iOS监控-野指针定位

  • 野指针空指针万能指针

    野指针空指针万能指针

网友评论

    本文标题:野指针相关概念

    本文链接:https://www.haomeiwen.com/subject/ftdhvqtx.html