很多時候,我們需要根據問題的實際規模來定義陣列的大小,即確定實際需要使用的儲存空間的大小,這個時候就要用到動態申請、釋放儲存空間的方法。
一般情況下,變數儲存空間的分配和釋放是由系統自動完成的,不需要我們的干預。
系統對自動分配記憶體的變數的訪問方式有兩種:
在程式執行中動態申請、釋放記憶體的變數,只能通過指標間接訪問。在c++中,new用於動態申請記憶體,delete用於釋放。注意:這些記憶體空間在程式結束前的適當時刻必須通過delete釋放。
例項
#include
using
namespace
std;
int main()
注意:
new運算子有四種格式
p = new int;
p = new int(8);
p = new int[n];
p = new int[m][n];
其中只有格式2記憶體空間初始化,其他的記憶體空間初始值是不確定的,需要使用後續的賦值語句和通過指標間接的對其賦值。例如
p = new
int; //返回申請到的記憶體的起始位址
*p = 8;
(int)num = *p;
float *p;
p = newe float[10];
if (p == null)
else
#成功則執行程式
...
delete p;
儲存空間動態分配
ansi c說明了三個用於儲存空間動態分配的函式 1 malloc 分配指定位元組數的儲存區。此儲存區中的初始值不確定 2 calloc 為指定長度的物件,分配能容納其指定個數的儲存空間。該空間中的每一位 bit 都初始化為0 3 realloc 更改以前分配區的長度 增加或減少 當增加長度時,可能...
C 動態儲存空間的分配和釋放
使用new申請空間 特點 1 沒有名字,只能通過指標間接訪問它們。2 從堆中申請空間 分類 變數 語法 指標變數 new 型別名 delete 指標變數 舉例 int p p new int delete p 初始化 p 90 p new int 99 一維陣列 語法 指標變數 new 型別名 下標...
儲存空間的分配和釋放
在c語言中,記憶體分配提供了四個函式,malloc 函式 calloc 函式 realloc 函式和free 函式,用來實現記憶體的動態分配和釋放。這四個函式屬於stdlib.h這個庫函式中,其中malloc 函式 calloc 函式和realloc 函式都用於動態儲存分配,但有所差別,free 函...