1. 程式人生 > 其它 >c指標深入理解--動態記憶體管理

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;

      }