关于delete的问题

edwardpro 2003-09-29 12:57:32
比如我如下:
int **p;
:
:
最后我要用delete息构这个**p应该怎么操作?
...全文
30 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
grail0922 2003-09-29
  • 打赏
  • 举报
回复
new和delete是内存分配操作符,new用于分配内存,delete用于释放内存。
堆是计算机中一大块未使用的内存(除去操作系统和正在使用的应用程序所占内存之外的剩余内存),它的大小是随时在改变的,所以是动态内存。
在用new分配内存时不必对返回指针做类型转换。分配单一变量如int、float没有意义,分配数组时只需一个指针指向它的多个元素。
char *eName=new char[9];
delete [] eName;//释放为eName分配的所有内存。
堆不会自己初始化,必须用自己的数据初始化。
应该在分配内存时进行初始化
char * eName=new char('a');//这是一个字符。
char * eName=new char[9];//这是一个数组,有九个元素(如果是字符串,还要包括NULL0的空间)。
strcpy(eName,"base wood");//初始化数组的例子。
两维或两维以上的数组称为多维数组,也可叫矩阵(一维以上的数组,也称表)。
dataType (*matrixName)[numELs]....//矩阵变量的定义。
dataType//是任意的数据类型包括用户自定义的
matrixName//矩阵变量的名
numELs//除第一维后的维的大小。
例子:
float (* table)[6];//定义矩阵变量
table=new float[5][6];//分配存放30个浮点数的内存给矩阵变量。
float * table[6]=new float[5][6];//可以合并为:
delete [] table;//全部释放
siriuscor 2003-09-29
  • 打赏
  • 举报
回复
应该象五个三角的人说的那样:)
grail0922 2003-09-29
  • 打赏
  • 举报
回复
在析构函数中
if(!*p==MULL)
*p=NULL;
sevecol 2003-09-29
  • 打赏
  • 举报
回复
你需要知道具体指向的是new产生的数组还是非数组

int *p=new int(100);
int **pp=&p;

delete (*pp);

int *p=new int[100];
int **pp=&p;

delete[] (*pp);
eve81 2003-09-29
  • 打赏
  • 举报
回复
先NEW一个。比如NEW *P=A;
再DELETE *P;
anetfish 2003-09-29
  • 打赏
  • 举报
回复
delete 跟 new 是一对,不能单独使用。

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧