天天看點

堆空間中的動态配置設定

1. malloc( )

(1)調運格式

(2)例如:

double*p;
p=(double*)malloc(*sizeof(double));
           

通過調運malloc( )函數,向系統動态申請了5個double類型的存儲空間,一共是40B。

系統将這40B存儲空間的首位址指派給指針p,可以了解為指針p指向了一個double型的存儲單元。

(3)必須檢測傳回值的有效性,如果開辟空間失敗傳回空指針。

if(NULL==p)
{
    printf("malloc error\n");
    return -;
}
           

2.calloc( )

(1)調運格式

(2)例如:

double*p;
p=(double*)calloc(,sizeof(double));
           

通過調運calloc( )函數,同樣向系統動态申請了5個double型的存儲空間,并且将p 指針指向該存儲空間的首位址。

3.realloc( )

(1)調運格式

void*realloc(void*ptr,size_t size);
           

(2)功能:

a.若ptr==NULL,則該函數等同于malloc。

double*p;
p=(double*)realooc(NULL,);
           

b.擴容空間

char*ptr=malloc();
if(NULL==ptr)
    return -;
char*Newptr=realloc(ptr,);
if(NULL==p)
{
    printf("realloc error\n");
    return -;
}
//将100位元組的空間擴容為200
           

**注:**Newptr和ptr有可能相等,也有可能不等,是以隻使用realloc的傳回指針。

堆空間中的動态配置設定

4.動态釋放

當動态申請的存儲單元不在使用時,應将這些存儲單元釋放掉,即将存儲空間歸還給作業系統。

free(指針變量);
           

繼續閱讀