在編程中有時候你需要分配一下內存但是你事先有不知道分配多少,那怎麼辦呢,就需要動態分配內存。
C函數庫提供了兩個函數 malloc 和 free 這兩個函數是做內存分配和 內存釋放。
函數原型如下:
void *malloc( size_t size );
void free( void *pointer );
如果分配不出內存了 malloc 函數就會返回NULL 指針。
free 的參數要麼是 NULL,要麼是之前分配的。
還有兩個函數 calloc realloc
calloc 也用於內存分配,和malloc之間的區別是,calloc 在返回內存的時候會把返回值指向的地址先初始化爲0再返回。
realloc用於把之前分配的內存大小進行修改。不過不太常用。
代碼
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i;
int *pi = malloc( 10*sizeof( int ) );
for(i=0; i<10; i++)
{
pi[i] = 2*i;
}
for(i=0; i<10; i++)
{
printf("賦值的是%d\n", pi[i]);
}
free(pi);
return 0;
}
執行效果