不可以的。malloc, alloc, free是c定義的一組內(nèi)存管理的API函數(shù),當你調(diào)用malloc、alloc分配內(nèi)存時,不僅僅是從堆里面分配得到了可用內(nèi)存,實際上內(nèi)存管理子系統(tǒng)還會維護了內(nèi)存列表。
我們提供的服務(wù)有:成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、菏澤ssl等。為上1000+企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的菏澤網(wǎng)站制作公司
free(*add(a,b));顯然是寫錯了,應(yīng)該是free(add(a,b));才對。改后從原理到語法都是正確的,是完全合法有效的。
涉及到內(nèi)存泄漏。舉個小片段:char *a = (char *)malloc(100);a = (char *)malloc(100);free(a);分配了兩次,只能free最后一次分配的,前一次分配的,丟掉了,找不回來。
free(q);q = NULL;后,q和p指向的空間被釋放,且q被賦值為NULL,但是此時p變量的值并沒有改變,即其值還是原來申請的空間的首地址。
因為free函數(shù)僅僅是告訴操作系統(tǒng),這一塊內(nèi)存被釋放了,可以用來作其它用途。但是,由于你沒有重新對這塊內(nèi)存進行寫操作,所以內(nèi)存中的變量數(shù)值并沒有發(fā)生變化。所以輸出值不變。
1、不可以的。malloc, alloc, free是c定義的一組內(nèi)存管理的API函數(shù),當你調(diào)用malloc、alloc分配內(nèi)存時,不僅僅是從堆里面分配得到了可用內(nèi)存,實際上內(nèi)存管理子系統(tǒng)還會維護了內(nèi)存列表。
2、free(*add(a,b));顯然是寫錯了,應(yīng)該是free(add(a,b));才對。改后從原理到語法都是正確的,是完全合法有效的。
3、當n為0時,for循環(huán)就不會被執(zhí)行,ps也就不會被分配空間,在這種情況下free顯然是不合適的,會造成程序崩潰。
4、free(q);q = NULL;后,q和p指向的空間被釋放,且q被賦值為NULL,但是此時p變量的值并沒有改變,即其值還是原來申請的空間的首地址。
5、函數(shù)聲明:void free(void *block);即: void free(指針變量);之所以把形參中的指針聲明為 void* ,是因為free必須可以釋放任意類型的指針,而任意類型的指針都可以轉(zhuǎn)換為void *。
1、不可以的。malloc, alloc, free是c定義的一組內(nèi)存管理的API函數(shù),當你調(diào)用malloc、alloc分配內(nèi)存時,不僅僅是從堆里面分配得到了可用內(nèi)存,實際上內(nèi)存管理子系統(tǒng)還會維護了內(nèi)存列表。
2、malloc 和 free 是在系統(tǒng)的棧上分配空間。malloc是申請,意思就是告訴系統(tǒng),我要用一塊RAM,給我用了別人就不要用了。free是釋放,意思是告訴系統(tǒng),給我的這塊RAM我用完了,不再用了,系統(tǒng)可以把它干別的了。
3、free(*add(a,b));顯然是寫錯了,應(yīng)該是free(add(a,b));才對。改后從原理到語法都是正確的,是完全合法有效的。
4、函數(shù)聲明:void free(void *block);即: void free(指針變量);之所以把形參中的指針聲明為 void* ,是因為free必須可以釋放任意類型的指針,而任意類型的指針都可以轉(zhuǎn)換為void *。