因為free函數僅僅是告訴操作系統,這一塊內存被釋放了,可以用來作其它用途。但是,由于你沒有重新對這塊內存進行寫操作,所以內存中的變量數值并沒有發生變化。所以輸出值不變。

創新互聯是一家專業提供椒江企業網站建設,專注與做網站、網站建設、H5高端網站建設、小程序制作等業務。10年已為椒江眾多企業、政府機構等服務。創新互聯專業網站制作公司優惠進行中。
通常建議,將這個p用完了也置NULL
struct LNode *addroot(struct LNode *_root)
{
struct LNode *p = NULL, *p2 = NULL;
if(_root == NULL)
{
_root = talloc();
dateget(_root);
}
else
{
for(p=_root; p-next != NULL; p=p-next)
;
p2 = talloc();
dateget(p2);
p-next = p2;
}
return _root;
}
======================================
???? for?
for(p=_root; p-next != NULL; p=p-next)
;
不可以的。
malloc, alloc, free是c定義的一組內存管理的API函數,當你調用malloc、alloc分配內存時,不僅僅是從堆里面分配得到了可用內存,實際上內存管理子系統還會維護了內存列表。你自己定義的指針不會在這個列表中的,所以free會出問題的。
那么,使用new, GlobalAlloc之類的方式分配的內存可不可以使用free呢。我的回答是,盡量不要,大部分情況都會帶來風險。這里面涉及new, malloc, GlobalAlloc, HeapAlloc, LocalAlloc,VirtualAlloc等函數的區別。
網頁題目:c語言free(n)函數 c語言中free函數
瀏覽路徑:http://www.yijiale78.com/article26/dodsijg.html
成都網站建設公司_創新互聯,為您提供外貿網站建設、網站排名、品牌網站設計、電子商務、、網站制作
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯