c璇█malloc鍑芥暟鎬庝箞浣跨敤
malloc鍑芥暟鐢ㄤ簬鍔ㄦ€佸垎閰嶅唴瀛樼┖闂达紝鍏跺師鍨嬩负锛?/p>
void* malloc(size_t size);
鍏朵腑锛宻ize_t鏄棤绗﹀彿鏁村瀷锛岀敤浜庤〃绀鸿鍒嗛厤鐨勫唴瀛樼┖闂寸殑澶у皬锛堜互瀛楄妭涓哄崟浣嶏級銆?/p>
浣跨敤malloc鍑芥暟鐨勪竴鑸楠ゅ涓嬶細
-
閫夋嫨瑕佸垎閰嶇殑鍐呭瓨绌洪棿鐨勫ぇ灏忥紝骞跺皢鍏跺瓨鍌ㄥ湪涓€涓彉閲忎腑銆?/p>
-
浣跨敤malloc鍑芥暟鍒嗛厤鍐呭瓨绌洪棿锛屽苟灏嗚繑鍥炵殑鎸囬拡瀛樺偍鍦ㄤ竴涓寚閽堝彉閲忎腑銆?/p>
-
妫€鏌alloc鍑芥暟鏄惁鎴愬姛锛屽嵆妫€鏌ヨ繑鍥炵殑鎸囬拡鏄惁涓篘ULL銆傚鏋滀负NULL锛屽垯琛ㄧず鍐呭瓨鍒嗛厤澶辫触锛岄€氬父鏄洜涓哄唴瀛樹笉瓒炽€?/p>
-
浣跨敤杩斿洖鐨勬寚閽堣繘琛屽唴瀛樻搷浣滐紝渚嬪璧嬪€兼垨璁块棶銆?/p>
-
鍦ㄤ娇鐢ㄥ畬鍒嗛厤鐨勫唴瀛樺悗锛屼娇鐢╢ree鍑芥暟閲婃斁鍐呭瓨绌洪棿锛屼互渚垮叾浠栫▼搴忓彲浠ヤ娇鐢ㄣ€?/p>
涓嬮潰鏄竴涓娇鐢╩alloc鍑芥暟鐨勭ず渚嬩唬鐮侊細
#include <stdio.h>
#include <stdlib.h>
int main() {
int size = 5; // 鍒嗛厤5涓暣鍨嬪彉閲忕殑鍐呭瓨绌洪棿
int* ptr = (int*)malloc(size * sizeof(int)); // 鍒嗛厤鍐呭瓨绌洪棿锛屽苟灏嗚繑鍥炵殑鎸囬拡瀛樺偍鍦╬tr鍙橀噺涓?/span>
if (ptr == NULL) { // 妫€鏌ュ唴瀛樺垎閰嶆槸鍚︽垚鍔?/span>
printf("鍐呭瓨鍒嗛厤澶辫触\n");
return 1;
}
for (int i = 0; i < size; i++) { // 浣跨敤鍒嗛厤鐨勫唴瀛樼┖闂磋繘琛屾搷浣?/span>
ptr[i] = i + 1;
printf("%d ", ptr[i]);
}
printf("\n");
free(ptr); // 閲婃斁鍐呭瓨绌洪棿
return 0;
}
鍦ㄤ笂杩扮ず渚嬩腑锛岄鍏堝畾涔変簡涓€涓彉閲弒ize鏉ヨ〃绀鸿鍒嗛厤鐨勫唴瀛樼┖闂寸殑澶у皬銆傜劧鍚庯紝浣跨敤malloc鍑芥暟鍒嗛厤浜唖ize涓暣鍨嬪彉閲忕殑鍐呭瓨绌洪棿锛屽苟灏嗚繑鍥炵殑鎸囬拡瀛樺偍鍦╬tr鍙橀噺涓€傛帴鐫€锛屼娇鐢╥f璇彞妫€鏌ュ唴瀛樺垎閰嶆槸鍚︽垚鍔燂紝濡傛灉ptr涓篘ULL锛屽垯琛ㄧず鍐呭瓨鍒嗛厤澶辫触銆傚鏋滃唴瀛樺垎閰嶆垚鍔燂紝鍒欎娇鐢╢or寰幆瀵瑰垎閰嶇殑鍐呭瓨绌洪棿杩涜鎿嶄綔锛屽苟鍦ㄦ渶鍚庝娇鐢╢ree鍑芥暟閲婃斁鍐呭瓨绌洪棿銆?/p>
闇€瑕佹敞鎰忕殑鏄紝鍦ㄤ娇鐢╩alloc鍑芥暟鍒嗛厤鍐呭瓨绌洪棿鍚庯紝闇€瑕佹墜鍔ㄤ娇鐢╢ree鍑芥暟閲婃斁鍐呭瓨绌洪棿锛屼互鍏嶉€犳垚鍐呭瓨娉勬紡銆?/p>
相关问答