有很大區別。根據以前的編程經驗,要點有三點:一是空間分配的連續性;二是動態內存申請;三是防止程序執行中出現異常錯誤。
以下分別說明。
直接定義變量與malloc定義變量的編程含義;malloc事先分配好了內存空間。
在c語言中,malloc函數原型為void*malloc(unsignedintslong),其作用是在內存的動態存儲區中分配一個長度為slong的連續空間。此函數的返回值是分配區域的起始地址,如:
char*p;
p=malloc(64000);//空間不夠指針為null。
如果用數組定義:
charp[64000],表示的是聲明了一個數組,此數組的大小64000個字節。
但是,請注意要點:
系統這時并沒有為其分配內存。只是在使用時才分配。
動態內存申請與釋放,確保內存的正確使用。
比如,我們在控制系統中,經常要對用戶輸入的一段零件程序、一個圖象文件進行解釋、識別,那么首先要做的,是將此文件裝入內存中,執行完成后,立即釋放。這就需要malloc及free了。延用上面的定義:
fread(p,64000,1,fp);
fclose(fp);
free(p);
要點是隨時申請,用完釋放。
如果不用malloc,直接定義,在大型軟件開發中,一般會導致程序執行異常,出現不可控的結果。
在前兩點,都用到charp[64000]及malloc(64000)。
很多初學者,為了省事,喜歡用charp[64000]這樣的定義。這樣最容易出現bug,尤其是當p指針越大時,出現問題幾率越大。
這是因為,對于p[64000]這種寫法,如果系統沒有足夠多的內存使用,那么p[lp]所指向的,可能就是一個其它變量了,或者說p[lp]把其它變量空間覆蓋了。
在VC、VS中,情況要稍好,因為管理的內存足夠大。
總結:在大型軟件開發中,如果不用malloc,直接定義數組,一般會導致程序執行異常,出現不可控的結果。
對于超過1000字節的數組空間,建議用malloc/free,以確保數組變量的絕對正確;小的空間,直接用數組定義即可。
上一篇捕魚達人是可以聯機玩的嗎
下一篇c代碼是什么意思?