二级指针的申请跟删除(基于C++的new机制)

来源:互联网 发布:局域网语音软件 编辑:程序博客网 时间:2024/05/22 15:23
<pre name="code" class="cpp">#include<conio.h>#include<iostream>#include<stdlib.h>using namespace std;#define FORi(N) for(int i=0;i!=N;i++)#define FORj(N) for(int j=0;j!=N;j++)#define El  <<endlint main(){int **iptr = new int*[3];int*tempPtr = new int[9];FORi(3)//----3申请连续字符串iptr[i] = tempPtr;// +3 * i;tempPtr = NULL;FORi(3)FORj(3){iptr[i][j] = i*j;cout << iptr[i][j] << ',';}cout << endl;char **cptr = NULL;cptr = (char **)malloc(sizeof(char *)* 3);FORi(3){//----分别申请3字符串cptr[i] = (char *)malloc(sizeof(char)* 3);}cptr[0] = "cdb";cptr[1] = "XYZ";cptr[2] = "AEF";FORi(3)FORj(3){cout << cptr[i][j] El;}FORi(3){cout << cptr[i] << endl;cout << &cptr[i] << endl;}/*for (int i = 2; i >= 0;i--)delete iptr[i];*///----编译不通过;/*{delete iptr[1];delete iptr[0];}*///----不通过,恰如以上//delete iptr[0];//----通过,delete iptr[1], iptr[1] == NULL;//----此句删除的是原来的temp的内存/*----通过,即delete p,无论p指向顺序内存期间哪里,delete p, p++ 都整块删除*/delete iptr, iptr = NULL;//----或者delete []iptr成功.cout << "~iptr 成功!"El;//FORi(3){//----删除分别申请的三段char*内存,即字符串的引用,但无变量赋值删除不了//delete  cptr[i];//cptr[i] = NULL;//}delete [] cptr, cptr = NULL;//----删除二级单块连续内存;cout << "~ cptr 成功!"El;//----VS2013删除失败,用free有提示相关截断return _getch();}//----walsfy168,Sep 24 测试.


                                             
0 0
原创粉丝点击