a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C > 正文

C語言free函數的原理

2023-06-09 12:08:04
字體:
來源:轉載
供稿:網友

如果malloc 了一塊字符串的內存,然后,它改變了這個字符串的大小,問會不會有一部分內存沒有被釋放掉。當然,肯定會釋放掉的,但是一直沒有了解過free 的原理,不敢亂說。我看了一下操作系統的內存管理,基本上是這樣的,當然各個系統的實現不一樣。

操作系統管理內存,維護了一個空閑內存鏈表,malloc從個鏈表中選出一個來使用,每個內存塊都有一個頭部來表示這個內存的基本信息,如內存大小,所以free 時候 能夠記住原來指針所指的內存大小,而不是用內存塊中是否有 /0 來臨時計算指向內存的大小,不要字符串的計算長度的方法所誤導。

還有一點要注意的就是,系統在free 內存的時候,記住的只是malloc 時候的地址,和分配內存的大小。

比如 char *p = (char *)malloc(10); 就會產生分配10個字節。如果 你把指針的地址改變了 p = p + 1;  然后 free 就要出問題了。程序會崩潰。

如果一定要改變指針的值,建議這樣做 char *newp = p; 然后 改變 newp = newp + 1 , 最后 free(p);

還有一點要注意,一個長度 為10 的字符串要占用 11個字節。因為還有一個 '/0', 所以分配內存的時候要分配 lenght + 1 的大小。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚洲久久一区 | 免费一二二区视频 | jvid美女成人福利视频 | 日韩性色视频 | 免费视频成人 | 欧州一区二区 | 91免费版在线观看 | 欧美国产激情二区三区 | av黄色一级片 | 国产a√ | 色偷偷噜噜噜亚洲男人 | 91精品一区二区三区久久久久久 | 日韩视频在线一区 | 欧美日韩中| 日韩精品人成在线播放 | 欧美国产精品 | 91中文字幕在线观看 | 精品国产一区二区三区四区 | 91精品国产综合久久久蜜臀图片 | 一区二区三区高清 | 成人男女激情免费视频 | 亚洲精品久久久蜜桃 | 日韩中文在线视频 | 日韩福利在线观看 | 日韩在线免费 | 欧洲妇女成人淫片aaa视频 | 一区二区三区在线 | 蜜桃视频日韩 | 国产精品亚洲综合 | 国产日韩av在线 | 亚洲日本aⅴ片在线观看香蕉 | 男女精品网站 | 中文字幕亚洲一区二区三区 | 免费h视频| 日韩精品一区二区三区中文字幕 | 麻豆专区一区二区三区四区五区 | 在线免费国产 | 欧美一区在线看 | 欧美日韩精选 | 日韩精品视频国产 | 国产亚洲一区二区三区在线观看 |