• 15深入理解C指针之---内存释放


      一、手动申请的内存,必须及时进行内存释放,否则容易造成内存泄露。主要代码形式为:

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3
     4 int main(int argc, char **argv)
     5 {
     6     int *ptrInt = (int *)malloc(sizeof(int) * 6);
     7     int size = 6;
     8     for(int i = 0; i < size; i++){
     9         *(ptrInt + i) = 90 + i;
    10     }
    11
    12     for(int i = 0; i < size; i++){
    13         printf("ptrInt[%d]: %d	", i, *(ptrInt + i));
    14     }
    15     free(ptrInt);
    16
    17     return 0;
    18 }

      一般情况下,都会将内存释放后,将其赋值为NULL,会更加安全。

    二、特殊情况:
        1、重复释放,大多是粗心无意识的,代码如下:    

    int  *ptrInt = (int *)malloc(sizeof(int));
    *ptrInt = 9;
    free(ptrInt);
    …
    free(ptrInt);

        2、重复释放,主要是对指针与内存的关系不明了,其实ptrInt和ptrInt1指向同一块内存,不能也不需要释放两次,代码如下:  

    int  *ptrInt = (int *)malloc(sizeof(int));
    *ptrInt = 9;
    int  *ptrInt1 = ptrInt;
    free(ptrInt);
    free(ptrInt1);

        3、内存释放的问题:

          1)、可能非常耗时,特别是存在结构体是更是如此;

          2)、可能增加应用程序大小;

          3)、可能导致程序运行时间加长;

          4)、可能会增加编程错误的概率;

          5)、可能会比不释放造成更多的问题;
        

  • 相关阅读:
    无法访问局域网其他计算机
    部署好网站,同局域网中电脑无法访问的问题的解决方案
    python——模块
    python字符串实战
    python——迭代器和生成器
    python——面向对象基础
    python——文件操作
    python——面向对象相关
    python——面向对象进阶
    设计模式——单例模式
  • 原文地址:https://www.cnblogs.com/guochaoxxl/p/6960832.html
Copyright © 2020-2023  润新知