美文网首页
内存泄露 VS 野指针

内存泄露 VS 野指针

作者: helinyu | 来源:发表于2018-04-01 16:52 被阅读88次

它们两个都是关于内存的操作:

内存的使用的正确逻辑:区分这个时候存在应用程序、系统两个之前的关系和区别,不是同一个东西;
正常使用一个变量的内存操作过程:
:当程序向系统申请一块内存空间时候,程序会把申请号好的这块内存空间的首地址赋给变量a,假设变量a拿到的首地址是0x3456,那么当这块空间使用完成被free释放了之后,这块空间的使用权又被程序还给了系统。 并且将指针变量赋值给Null,置位NULL的时候;

内存泄露:
当变量a申请一块内存的时候, 需要malloc函数去分配内存空间,这样变量就可以使用了,当时使用完成了之后,也就是这个变量已经销毁了,但是它对应的a内存并没有释放,这个时候a对应的内存所有权还是归为应用程序,所以,这个内存不会被其他的变量所访问。系统并没有获得这个变量的所有权;所以这个内存就相当于"占着茅坑不拉屎";这样就浪费了内存,导致可以使用的内存也来也少: ++++> 内存泄露 : 需要释放内存空间;
所谓的泄露: 指的是内存记录上可以使用的内存的记录缺少了这一块,这一块本来是应该在记录里面的。

野指针:
当变量a申请一块内存的时候, 需要malloc函数去分配内存空间,这样变量就可以使用了,当时使用完成了之后,也就是这个变量已经销毁了,对应的a内存已经释放,应用程序将这块内存的所有交回给了系统,但是变量a所获得的内存地址还是原来的了对应的内存地址,并没有置位NULL;导致我们再次使用a这个变量的时候,应用程序并没有获得访问这个地址的所有权,或者说这个变量已经不能够访问了。 野指针 : 需要将变量所指向的地址为NULL;
【也就是交给系统的时候,但是指向这边地址的变量还没有置位NULL,在多线程的时候,有可能这个时候访问了这个变量的地址,这样就会造成野指针】

参考链接:
https://blog.csdn.net/sheep_and_stone/article/details/51356444

相关文章

  • 内存泄露 VS 野指针

    它们两个都是关于内存的操作: 内存的使用的正确逻辑:区分这个时候存在应用程序、系统两个之前的关系和区别,不是同一个...

  • iOS底层原理

    内存泄露内存泄露是指我们在开发过程中当栈中的指针消失以后,堆中的内存还存在的情况 野指针野指针指的是堆中的内存消失...

  • 说说App卡的三个原因

    主线程阻塞了 线程太多了 内存泄露?野指针?

  • 内存泄露,野指针

    堆是动态分配内存的,并且可以分配使用很大的内存,使用不好会产生内存泄露。频繁地使用malloc和free会...

  • C++ 智能指针

    智能指针 传统指针存在的问题需要手动管理内存容易发生内存泄露(忘记释放,出现异常等)释放之后产生野指针 智能指针就...

  • 内存泄露和野指针

    为什么要进行内存管理 iPhone手机的内存是有限的,目前最大内存是2G,当运行频繁多的app的时候,会占用大量的...

  • 内存管理

    一,堆和栈 二,空指针、野指针和僵尸对象、内存泄露 三,assign,weak,strong,copy 详解 四,...

  • FFmpeg开发--C语言回顾

    运行Hello World Shell运行Hello World程序: Shell运行Demo: 内存泄露与野指针...

  • iOS基础知识总结

    1.内存泄露和野指针 2.为什么@property声明(NString,NSArray,NSDictionary)...

  • VC++ 野指针,空指针等内存问题错误码

    最近使用 VS 开发 c++ 的 dll ,发现 vc++ 对野指针、空指针、未初始化内存等导致的内存错误报有特定...

网友评论

      本文标题:内存泄露 VS 野指针

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