c指針深入理解--動態內存管理

一、動態內存管理:

  1)malloc:

    特點:單純的分配內存,執行速度較快

  2)calloc:

    特點:分配內存,並對該內存清零,執行速度比malloc慢

  3)realloc:

    -》函數原型:void *realloc(void *ptr, size_t size);

       *ptr 不為空:

          1)size = 空,釋放內存

          2)size 比原內存小,利用當前內存塊,分配更小內存塊

             3)size比原內存大,當前位置或者其他位置分配更大內存

  4)alloca:

    特點:在盞分配內存

 

二、迷途指針:

   1)釋放內存時,沒有先清零指針

      -》情況1,

        int *ptr = malloc( sizeof(int ));

        *ptr = 10; 

        free( *ptr); // 因釋放前沒有清零指針,導致ptr變成了迷途指針。

      -》情況二

        int *ptr = malloc( sizeof(int ));

        *ptr = 10; 

        int *ptr2;

        ptr2 = ptr; // 這個也是迷途指針

        free( *ptr); // 因釋放前沒有清零指針,導致ptr變成了迷途指針。

   2)指針在全局定義,但在盞內賦值

      int *ptr;

      {

        int tmp = 10;

        ptr = &tmp;

      }

 

 

  

posted @ 2021-12-14 11:51  dcli  阅读(27)  评论(0)    收藏  举报