在C語言中動態內存該怎么分配

飛來科技  發布時間:2019-11-07 13:05:27

本文關鍵詞:c語言申請動態內存檢查

c語言靜態內存和動態內存_c語言申請動態內存檢查_c語言動態內存分配函數

要知道在C語言中動態內存是怎樣分配的,我們首先要知道哪些是內存的動態分配,之前我們即將介紹過全局函數和局部變量,全局數組是分配在內存中的靜態儲存區的,非靜態的局部變量(包括數組)是分配在內存中的動態存儲區的c語言申請動態內存檢查,這個存儲區是一個稱為棧(stack)的區域。除此以外,C語言還允許創建存儲動態分配區域,以保存一些臨時用的數據,這此數據不必在程序的聲明部分定義c語言申請動態內存檢查,也不必待到函數結束時才釋放,而是應該時隨時開辟,不需要時隨時傳遞。 這些數據是臨時存放在一個特別的自由存儲區,稱為堆(heap)區。可以按照需要向平臺申請所需大小的空間。 由于未在聲明部分定義他們為函數或字段,因此不能通過函數名或變量名去引用某些數據,只能借助指針來引用。

那么電腦怎么制定存儲的動態分配的那;對內存的動態分配是借助平臺提供的庫函數來推動的,主要有 malloc,calloc,free,realloc這4個函數。以下我將一一的介紹。

一。用malloc函數開辟動態存儲區;

一般方式為;

c語言申請動態內存檢查_c語言靜態內存和動態內存_c語言動態內存分配函數

void *malloc(unsigned int size);

其作用是在內存的動態儲存區中分配一個長度為size的連續空間。形參size的類別定為無符號整型(在這里不允許為負數)。此變量的值(即“返回值”)是所分配區域的第一個字節的地址,或者說,此變量是一個指針型函數,返回的指針指向該分配域的第一個字節。

二。用calloc函數開辟動態內存區

一般方式為;

c語言靜態內存和動態內存_c語言動態內存分配函數_c語言申請動態內存檢查

void *calloc(unsigned n,unsigned size);

其作用是在內存的動態儲存區中分配n個厚度為size 的連續空間,這個空間通常非常大,足以保存一個數組.用calloc函數可以為一維字符開辟動態內存空間,n為字符元素個數,每個元素尺寸為size。 這就是動態鏈表。 函數返回指向所分配域的第一個字節的指針;如果分配不順利,返回NULL.

三。用realloc函數重新分配動態存儲區

一般方式為;

c語言申請動態內存檢查_c語言靜態內存和動態內存_c語言動態內存分配函數

void *realloc(void*p,unsigned int size);

如果已經通過malloc函數或 calloc 函數獲取了動態空間,想改變其大小,可以用recalloc函數重新分配。

用realloc 函數將p所指向的動態空間的大小改變為size。p的值不變,如果重分配不順利,返回NULL。

四。用free函數釋放動態存儲區

c語言動態內存分配函數_c語言申請動態內存檢查_c語言靜態內存和動態內存

一般方式為;

void free(void*p);

其作用是釋放指針變量p所指向的動態空間,使這部分空間能再次被其它變量使用。 p應是最近一次讀取calloc或malloc 函數時得到的變量返回值。

free 函數無返回值。

以上4個函數的聲明在 stdlib.h頭文件中,在用到這些函數時必須用“#include<stdlib.h>”指令把 stdlib.h頭文件包括到程序文件中。這就是基本的動態內存的空間分配。

本文來自互聯網,由機器人自動采編,文章內容不代表本站觀點,請讀者自行辨別信息真偽,如有發現不適內容,請及時聯系站長處理。

    相關閱讀
    广东快乐十分诈骗