C語言中動態分配內存

在使用c語言編寫程序時,經常遇到數組長度不固定,或者需要由前面計算結果給出所需數組長度的情況,此時就需要用到C語言中的動態分配內存。動態分配內存主要用到三個函數malloc,memset 和 free。

void *malloc(size_t size);
函數解釋:void* 表示未確定類型的指針,void *可以指向任何類型的數據,更明確的說是指申請內存空間時還不知道用戶是用這段空間來存儲什麼類型的數據(比如是char還是int或者其他數據類型)。需要注意的是malloc 函數返回的是 void * 類型。對於C++,如果寫成:p = malloc (sizeof(int)); 則程序無法通過編譯,報錯:“不能將 void* 賦值給 int * 類型變量”。所以必須通過 (int *) 來將強制轉換。而對於C,沒有這個要求,但爲了使C程序更方便的移植到C++中來,建議養成強制轉換的習慣。

void *memset(void *s, int ch, size_t n);
函數解釋:將s中當前位置後面的n個字節 用 ch 替換並返回 s 。
void free(void *ptr);
函數解釋:釋放malloc函數申請的動態內存。

	unsigned int n;
        unsigned int *x;
	x = (unsigned int*)malloc(sizeof(unsigned int) * n);//申請內存
        memset(x, 0, sizeof(unsigned int) * n);//內存中數據清零
  	free(x);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章