動態記憶體管理

2021-10-25 20:09:14 字數 2064 閱讀 5846

malloc函式是向記憶體動態申請乙個空間,這個空間的具體位置是系統來分配的不確定的。

函式原型:

void

*malloc

(size_t size)

;

malloc函式的返回值是返回乙個空型別位址,我們在使用malloc函式的時候,必須要對它的返回值進行強制型別轉換,而強制轉換成什麼型別是根據我們需要使用的型別。

使用案列:

#define _crt_secure_no_warnings 1

#include

#include

intmain()

else

for(i =

0; i <

10; i++

)for

(i =

0; i <

10; i++

)return0;

}

callocmalloc差不多malloc可以說是calloc的子集,不過它們還是有點區別的calloc的引數是兩個,而且用它申請空間它會幫你把這個空間順便給初始化,具體要使用哪個函式根據自己的需求。

calloc函式的原型:

void* calloc(size_t num, size_t size);
第乙個引數是數量,第二個引數是大小。

使用案列:

#define _crt_secure_no_warnings 1

#include #include int main()

else

for (i = 0; i < 10; i++)

for (i = 0; i < 10; i++)

return 0;

}

用於釋放記憶體塊,只能釋放使用者申請的記憶體,使用完了不用就得使用free釋放,釋放完了我們的指標必須置空否則,會造成記憶體洩漏。

函式原型:

void

free

(void

*memblock )

;

使用案列:

#define _crt_secure_no_warnings 1

#include

#include

intmain()

else

for(i =

0; i <

10; i++

)for

(i =

0; i <

10; i++

)free

(p);

//釋放p指標

p =null

;//指向空

return0;

}

realloc在原先的容量上擴大記憶體,如果你之前的記憶體後面沒有空間了,它就會再另一處重新開闢一塊有這麼大的記憶體空間並且會把之前的位址裡面的資料一併拷貝過來,如果後面的空間足夠擴充那麼它就會再原來的記憶體容量上擴充。

函式原型:

void

*realloc

(void

*memblock, size_t size )

;

函式的使用案例:

#define _crt_secure_no_warnings 1

#include

#include

intmain()

else

return0;

}

動態記憶體管理

首先應該明白物件的三種內部的儲存方式 自動儲存,靜態儲存,和動態儲存。當執行離開當期程式塊的時候,堆疊指標返回到它進入程式塊 之前的地方,有效的銷毀了那個程式塊的自動變數。重新進入這個塊會再次建立所有的自動變數。靜態物件宣告或者在檔案域中。動態物件是存在系統呼叫 的在執行期中建立並且儲存在堆中,這是...

動態 記憶體管理

定義變數時,必須制定其資料型別和名字。而動態建立物件時,只需指定其資料型別,而不必為該物件命名。取而代之的是,new表示式返回指向新建立物件的指標,我們通過該指標來訪問此物件。int i int pi new int 這個new表示式在自由儲存區中分配建立了乙個整型物件,並返回此物件的位址,並用該位...

動態記憶體管理

c語言使用malloc calloc realloc free進行動態記憶體管理。void test c 通過new和delete動態管理記憶體。new delete動態管理物件。new delete動態管理物件陣列。void test void test int globalvar 1 stati...