C語言malloc函數

2020-08-13 01:16:17

標頭檔案: stdlib.h(或malloc.h),這兩個標頭檔案都包含malloc(),我比較喜歡用前一個,主要是因爲後一個我剛剛纔知道。

函數原型: void *malloc(size_t size)

函數功能: 在記憶體的動態儲存區的堆區中,分配一個長度爲size的連續空間。

返回值: 分配成功則返回指向被分配記憶體空間的指針;否則返回指針NULL。

注意 1: 函數返回值型別是void *,意思是返回指針型別未知,所以在使用malloc()函數時要使用強制型別轉換。例如:

int* test = (int*)malloc(sizeof(int) * 4);

注意 2: malloc和free是配對的,如果申請後不釋放就是記憶體泄露,如果無故釋放那就是什麼也沒做,釋放只能釋放一次,如果一塊空間釋放兩次或者兩次以上會出現錯誤(但是釋放空指針例外,釋放空指針也等於什麼也沒做,所以釋放多少次都是可以的。)

範例程式碼:

#include<stdio.h>
#include <stdlib.h>
//#include <malloc.h>

int main(void)
{
	int* test = (int*)malloc(sizeof(int) * 4);//申請
	if (test == NULL)
	{
		printf("Fail to malloc!\n");
		exit(EXIT_FAILURE);
	}
	else
		printf("Success to malloc!\n");

	//一頓操作後...

	free(test);//釋放
	printf("I'm free!\n");

	return 0;
}

參考鏈接:
1: 【c語言】malloc函數詳解.
2: 百度百科——malloc函數.