藍森林首頁 | 返回主頁 | 本站地圖 | 站內搜索 | 聯繫信箱 |
 您目前的位置:首頁 > 自由軟件 > 技術交流 > 應用編程


    

藍森林 http://www.lslnet.com 2006年6月6日 10:18


關於 malloc && free 的問題!!!

請教大家:
  (1) 在編程中使用malloc並得到返回的指針後 ,能否知道在這指針後究竟分配了多少內存空間?
  (2) free是如何釋放內存的,就是它如何得知該指針後究竟分配了多少內存空間?

關於 malloc && free 的問題!!!

1、malloc至少分配參數指定的大小空間,但不負責初始化。分配使用的調用是brk()和sbrk(),如空系統沒有這麼多的空間或空間已經被分配,將會出錯返回NULL,並設置errno,如果成功,返回分配空間的地址。如果調用成功了,那麼分配的大小就是你參數中指定的大小。

2、free釋放由malloc、realloc和calloc分配的空間。如果參數為NULL,則什麼都不做。free不檢查指針的有效性,所以使用的時候應特別小心。如果用free去釋放一個不是由malloc、realloc和calloc分配的空間或者free兩次一個空間,那麼將會出現不可預期的結果。如果指針有效,那麼釋放的空間等於當初分配的大小。



Copyright © 1999-2000 LSLNET.COM. All rights reserved. 藍森林網站 版權所有。 E-mail : webmaster@lslnet.com