動態分配儲存與鍊錶

2022-04-01 06:17:15 字數 864 閱讀 5467

c語言中不允許動態陣列型別,但c提供了一些記憶體管理函式,使用其可以動態的分配記憶體空間。常用的記憶體管理函式有以下三個:

(1)分配記憶體空間函式malloc、calloc;

(2)釋放記憶體空間函式free;

1、malloc函式

原型:void *malloc(unsigned int size);

其作用是在記憶體的動態儲存區中分配乙個長度為size的連續空間(size是乙個無符號函式)。

此符號的返回值是乙個指向分配域起始位址的指標(型別為void)。

若此函式未能成功的執行,則返回空指標(null)。

2、calloc函式

原型:void *calloc(unsigned n,unsigned size);

作用:在記憶體的動態儲存區中分配n個長度為size的連續空間。

函式返回乙個指向分配域起始位址的指標;

若分配不成功,則返回null值。

用calloc函式可以為一維陣列開闢動態儲存空間,n為陣列元素個數,每個元素長度為size。

3、free函式

原型:void free(void *p)

作用:釋放由p指向的記憶體區,使這部分記憶體區能被其他變數使用。p是最近一次呼叫calloc或malloc函式時返回的值。

free函式無返回值。

鍊錶煉表是一種常見的重要的資料結構,是動態地進行儲存分配的一種結構。

例:

#include "

stdafx.h

"#include

#include

struct

student

;void

main()

while(head!=null);

}

儲存空間動態分配

ansi c說明了三個用於儲存空間動態分配的函式 1 malloc 分配指定位元組數的儲存區。此儲存區中的初始值不確定 2 calloc 為指定長度的物件,分配能容納其指定個數的儲存空間。該空間中的每一位 bit 都初始化為0 3 realloc 更改以前分配區的長度 增加或減少 當增加長度時,可能...

記憶體動態分配與靜態分配and儲存區域

1.c語言的全域性變數 靜態區域性變數的儲存實在編譯時確定的,其儲存的空間的實際分配在程式開始執行前完成。2.在棧上建立的,比如區域性自動變數,在執行進入變數定義所在的復合語句時為他們分配儲存單元。棧記憶體分配運算內置於處理器的指令集中 效率很高,但是分配的記憶體容量有限。3.以靜態方式安排儲存的好...

順序表 動態分配

儲存空間是程式執行過程中通過動態儲存語句分配的,一旦空間佔滿,就另外開闢一塊更大的儲存空間,用以替換原來的儲存空間。c語言呼叫stdlib庫,使用malloc,free函式。c 使用new,delect。include include define initsize 10 using namespa...