社区
C++ 语言
帖子详情
指针数组如何释放内存
冉航--小虾米
2010-03-22 06:15:47
我定义了一个指针数组,
char **p = new char* [3];
for(i =0; i < 3; i++)
{
p[i] = new char[10];
}
我是这样释放的:
for(i =0; i < 3; i++)
{
if(p[i] != NULL)
{
delete p[i];
p[i] = NULL;
}
}
delete pp;
pp = NULL;
不知道对不? 我想问一下可不可以 一次性 delete pp; 就能释放所有内存。
...全文
909
17
打赏
收藏
指针数组如何释放内存
我定义了一个指针数组, char **p = new char* [3]; for(i =0; i < 3; i++) { p[i] = new char[10]; } 我是这样释放的: for(i =0; i < 3; i++) { if(p[i] != NULL) { delete p[i]; p[i] = NULL; } } delete pp; pp = NULL; 不知道对不? 我想问一下可不可以 一次性 delete pp; 就能释放所有内存。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
gunsand
2010-03-23
打赏
举报
回复
循环释放
ssdx
2010-03-23
打赏
举报
回复
[Quote=引用 14 楼 gaoxiaoweiandy 的回复:]
补充:没有 运行delete [] pStr. 只有delete A; 那么 PStr所指向的内存会释放吗????
[/Quote]
自己写的类,不会。
char/int 这种内置类型无所谓。
不过还是建议对于数组都写成 delete[] 这种情况
linyongzuo
2010-03-23
打赏
举报
回复
依然存在与内存之中,只不过你找不到。一般你在析构函数里面delete掉就好了。
linyongzuo
2010-03-23
打赏
举报
回复
[Quote=引用 14 楼 gaoxiaoweiandy 的回复:]
补充:没有 运行delete [] pStr. 只有delete A; 那么 PStr所指向的内存会释放吗????
[/Quote]
不会。
冉航--小虾米
2010-03-23
打赏
举报
回复
补充:没有 运行delete [] pStr. 只有delete A; 那么 PStr所指向的内存会释放吗????
yuzl32
2010-03-23
打赏
举报
回复
[Quote=引用 12 楼 gaoxiaoweiandy 的回复:]
如果 有 一个 对象 A 是 通过指针 new 出来的。
例如 A * P = new A();
p-> pStr = new char[10];
请问 运行 delete A 以后, 那 pStr的内存会释放掉吗?
[/Quote]
不会,要先释放delete[] pStr.
冉航--小虾米
2010-03-23
打赏
举报
回复
如果 有 一个 对象 A 是 通过指针 new 出来的。
例如 A * P = new A();
p-> pStr = new char[10];
请问 运行 delete A 以后, 那 pStr的内存会释放掉吗?
lxslove
2010-03-23
打赏
举报
回复
[Quote=引用 5 楼 gaoxiaoweiandy 的回复:]
delete [] a[i]
和 delete a[i]
有什么区别,我用的 是 delete a[i] 形式 也没报错
[/Quote]
delete a[i]代替delete [] a[i] 这个是标准未定义的行为,结果不可预料,不过对于普通数据类型,大部分编译器都会成功delete掉,但如果是类,有析构函数的话,只有第一个对象的析构函数得到执行。最好
不要这样做!
chenhu_doc
2010-03-22
打赏
举报
回复
对,就是这样的。
而且做到一一对应。
另外:
char *ch = new char;
delete ch;
ch = 0;
delete ch; // 这是可以的,不会报错。
delete一个0指针,是不会做内存释放的,而是简单地返回。
最帅马老师
2010-03-22
打赏
举报
回复
[Quote=引用 7 楼 gaoxiaoweiandy 的回复:]
举个例子吗?
char * ch = new char;
delete ch;
char * ch = new char[10];
delete [] ch;
是这个意思吗?
[/Quote]
对的
冉航--小虾米
2010-03-22
打赏
举报
回复
举个例子吗?
char * ch = new char;
delete ch;
char * ch = new char[10];
delete [] ch;
是这个意思吗?
chenhu_doc
2010-03-22
打赏
举报
回复
new/delete
new xx[] / delete [] xx
需要配对使用。
冉航--小虾米
2010-03-22
打赏
举报
回复
delete [] a[i]
和 delete a[i]
有什么区别,我用的 是 delete a[i] 形式 也没报错
heguo2chao3
2010-03-22
打赏
举报
回复
delete p[i]后就不要再 p[i]=NULL了
不可以一次delete pp
weixiaoshashou
2010-03-22
打赏
举报
回复
for(int i=0;i<n;i++)
delete []a[i];
for(int j=0;j<n;j++)
delete []a;
就这样。
昵称很不好取
2010-03-22
打赏
举报
回复
delete []p[i];
delete []pp;
pengzhixi
2010-03-22
打赏
举报
回复
你这样释放是对的,不可能通过delete pp;一次性释放
C++ 11 14 17 20
内存
管理-指针、智能指针和
内存
池
课程简介C++ 11 14 17 20
内存
管理-指针、智能指针和
内存
池从基础到实战学习计划1. 每天学习一小时以上2. 跟着视频动手编写代码3. 调试代码并对比课程多提供的源码课程目标1. 理解指针原理并学会智能指针和编程2. 理解c++17
内存
池技术3. 理解c++11 14 17 20
内存
相关特性4. 拥有应用智能指针和
内存
池的实战的能力
数组指针和
指针数组
首先,理解一下数组指针和
指针数组
这两个名词: “数组指针”和“
指针数组
”,只要在名词中间加上“的”字,就知道中心了—— 数组的指针:是一个指针,什么样的指针呢?指向数组的指针。 指针的数组:是一个数组,什么样的数组呢?装着指针的数组。 然后,需要明确一个优先级顺序:()>[]>*,所以: (*p)[n]:根据优先级,先看括号内,则p是一个指针,这个指针指向一个一维数组,数组长...
指针数组
与数组指针详解
指针数组
与数组指针详解1.什么是
指针数组
和数组指针?
指针数组
:
指针数组
可以说成是”指针的数组”,首先这个变量是一个数组,其次,”指针”修饰这个数组,意思是说这个数组的所有元素都是指针类型,在32位系统中,指针占四个字节。 数组指针:数组指针可以说成是”数组的指针”,首先这个变量是一个指针,其次,”数组”修饰这个指针,意思是说这个指针存放着一个数组的首地址,或者说这个指针指向一个数组的首地址。 根
c语言
指针数组
分配
内存
,
指针数组
&数组指针的分配
内存
及函数参数 C语言版
最近写代码总是被基础知识卡住,十分耽误时间,今天又卡住了。所以下定决心一定要弄清楚这个问题,然后不好的是网上的资料总是解决的并不清楚,总是在纠结什么是
指针数组
什么是数组指针,看了《C缺陷和陷阱》也没有我想要的东西。要么就是C和C++混为一谈,new int[5]这种语法C肯定是错误的,所以找个机会总结一下,然后希望以后不要再栽在基础上。定义
指针数组
:int p[10] 数组指针 int(*p)[5...
指针数组
的
内存
分配和
释放
编码情景是要动态分配个数不确定的非内嵌类型对象,把获取的对象指针都存在一个数组里面,留待其他地方使用. 定义指针 CBase** m_pMotion; 个人偏向于用new/delete关键字,当然也可以用malloc/free函数组合来进行
内存
的分配和
释放
分配
内存
, nHWNo是外部传递的参数 m_pMotion = new CBase*[nHWNo]; for (int n...
C++ 语言
64,654
社区成员
250,484
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章