能這樣思考是好的。不過想想內存是用什么鄭毀標識的。要釋放的是內存,而不是內存里面存儲的內容。我們malloc出一塊內存,是為了往里存放數(shù)據(jù),但是里面存放的數(shù)據(jù)不清悄是這段內存的標識,因為這些數(shù)據(jù)是不確定的,只有指向這段內存的答叢渣指針才是這個內存塊的標識。
成都創(chuàng)新互聯(lián)是專業(yè)的鹿寨網(wǎng)站建設公司,鹿寨接單;提供網(wǎng)站建設、成都做網(wǎng)站,網(wǎng)頁設計,網(wǎng)站設計,建網(wǎng)站,PHP網(wǎng)站建設等專業(yè)做網(wǎng)站服務;采用PHP框架,可快速的進行鹿寨網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
因為free函數(shù)僅僅是告訴操作早念系統(tǒng),這一塊內存被釋放了,可以培宏用來作其它用途。但是,由于你沒有重新對這塊內存進行寫操作,所以內存中的變量數(shù)值并沒有發(fā)生變化。所以輸出陸中困值不變。
通常建議,將這個p用完了也置NULL
free(q); 釋放q指針所凳舉擁有的資源,告訴系統(tǒng),本程序不再使用該內存地址(free的功能就是這個)
q=q-next; 然后磨梁繼續(xù)引用該地址瞎粗運,則程序可能會死掉!
首先肯定你的主動思考,學習的主動性
然后明確說,malloc/free有多種不同的實現(xiàn),可以認為都是采用第二種辦法,或者變相采用第二種辦法。
首先說靜態(tài)變量行不衫廳通,不太可能只調用一次malloc,調第二次就覆蓋掉了,行不通。
一般的實現(xiàn),是把分配內存的長度等信息放在malloc來的指針的前面,用一個小結構來記錄分配的大小以及狀態(tài)信息,想要查證也不難,去下載一些源代碼閱讀一下就行。
至于你說的釋放最近仔鍵一次分配的內存,是另一個話題,涉及到內存泄漏。
舉個念塌巧小片段:
char *a = (char *)malloc(100);
a = (char *)malloc(100);
free(a);
分配了兩次,只能free最后一次分配的,前一次分配的,丟掉了,找不回來。
這個最后一次,指的是這個意思
分享文章:c語言free函數(shù)結構 c語言free函數(shù)的用法
網(wǎng)站網(wǎng)址:http://www.chinadenli.net/article36/ddpipsg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、定制網(wǎng)站、用戶體驗、網(wǎng)站制作、企業(yè)網(wǎng)站制作、微信公眾號
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)