malloc()和free()注意點

來源:互聯網
上載者:User

1.調用free()釋放記憶體後,不能再去訪問被釋放的記憶體空間。該段記憶體被釋放後,很有可能該指標仍然指向該記憶體單元,但這塊記憶體已經不屬於原來的應用程式,此時的指標為懸掛指標(可以賦為NULL),有些時候,為安全起見,將再次置該指標為空白。

    free(pt);    pt = NULL;
2.不能兩次釋放相同的指標(NULL的除外,無論對NULL指標free()多少次都不會出問題)。也不能用free()來釋放非malloc(),calloc()和realloc()函數建立的指標空間。
3.在進行C語言程式開發中,malloc和free是配套使用的,即不需要的記憶體空間都需要釋放回收。
4.在本人學習過程中發現一個問題:    如果使用:int * array = (int *)malloc(10 * sizeof(int));                      for (count=0; count<10; count++)                      {                            *array = count;                             array++;                       }       然後:     free(array);       會報錯。但當把指標重設為首地址時,再free(array)-->成功!       這是不是表示,向free()函數傳遞的參數是不是必須是段記憶體的首地址?答案:是的!


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.