陣列記憶體申請和釋放,指標陣列和陣列指標

2022-08-04 19:48:20 字數 1925 閱讀 5627

總結

對於指標陣列的理解:

按照字面意思,首先是指標,其次是陣列,就表明這是乙個陣列,不過陣列裡面儲存的指標。

```// 使用指標陣列

int **ptr = new int*[4];

for(int i = 0; i < 4; ++i)

```如**所示:new int * [4],表明這是乙個陣列,陣列裡面儲存的是 int *型別的指標。

而等號左值 int ** ptr,首先要看(int *)*ptr ,表明這乙個指標,其指向了int *型別的變數。

在看for迴圈內的內容,這是對陣列內指標進行初始化,將陣列內的每個指標指向了乙個int[3]的陣列,

當然這裡int [3],也可以改為int[4]等,當然也可以為陣列內,每個指標,分別制定不等長的陣列。

對於陣列指標的理解:

參照一位陣列指標的定義

```int * a = new int [3];

```和

```

// 使用陣列指標

int (*p)[3] = new int [4][3];

printf("陣列指標:\np:\t%d\n&p[0]:\t%d\n*p:\t%d\np[0]:\t%d\n&p[0][0]:%d\n\n"

,p,&p[0],*p,p[0],&p[0][0]);

```等號右值,都是陣列,等號左值依然是int *p ,不過因為其實二維陣列,所以

在其後,增加了指示二維的[3],以表明,其第二維的維度為3

問題:對於下面的**:

```class mystring;

mystring *pstringarray = new mystring[13];

```以下兩種delete有什麼區別?

```delete pstringarray;

delete pstringarray;

```方括號的存在會使編譯器獲取陣列大小(size)然後析構函式再被依次應用在每個元素上,一共size次。否則,只有乙個元素被析構。

部落格原文:

#include

#include

#include

#include

#include

using namespace std;

int main()

printf("指標陣列一步步申請:\nptr:\t%d\n&ptr[0]:%d\n*ptr:\t%d\nptr[0]:\t%d\n&ptr[0][0]:%d\n\n"

,ptr,&ptr[0],*ptr,ptr[0],&ptr[0][0]);

// 使用陣列指標

int (*p)[3] = new int [4][3];

printf("陣列指標:\np:\t%d\n&p[0]:\t%d\n*p:\t%d\np[0]:\t%d\n&p[0][0]:%d\n\n"

,p,&p[0],*p,p[0],&p[0][0]);

// 釋放記憶體

for(int i = 0; i < 4; ++i)

delete ptr;

delete p;

delete a;

return 0;}輸出

```一維陣列:

a: 3615416

*a: 3615824

&a[0]: 3615416

指標陣列一步步申請:

ptr: 3615440

&ptr[0]:3615440

*ptr: 3615464

ptr[0]: 3615464

&ptr[0][0]:3615464

陣列指標:

p: 3615560

&p[0]: 3615560

*p: 3615560

p[0]: 3615560

&p[0][0]:3615560

陣列記憶體申請和釋放,指標陣列和陣列指標

一 陣列指標的空間釋放 int p 3 new int 4 3 delete p 1 delete p 2 在釋放這個二維陣列時,應該使用1和2哪種方式呢?哪種對呢?其實兩種方法都是可以的,二維陣列,p 和 p 指向的位置相同的,都是指向第乙個元素的位址是 p 0 0 對於c c 如何檢測記憶體洩露...

動態申請的指標陣列的記憶體申請和釋放問題

char ppchar 0 void fun void main delete ppchar 釋放ppchar負責的記憶體空間 endif char array 10 未知行 每行10列 char arr 2 10 2行 每行10列 for int i 0 i 2 i delete arr 對二維陣...

記憶體的申請和釋放

常規用法 virtualalloc lpvoid lpaddress,size t dwsize,dword flallocationtype,dword flprotect lpaddress,指定記憶體開始的位址。dwsize,分配記憶體的大小。flallocationtype,分配記憶體的型別...