请问new 申请一个char数组的内存地址空间,可以用free来释放吗?

例如:char*p=newchar[128];free(p);这样做可以吗?... 例如:
char *p = new char[128];
free(p);
这样做可以吗?
展开
 我来答
spacife
2012-10-11 · TA获得超过108个赞
知道小有建树答主
回答量:64
采纳率:0%
帮助的人:91.7万
展开全部
new和delete是c++的运算符,在没有重载的时候,默认也是调用mallloc()和free(),由于c++的类有构造函数和析构函数,为类的对象指针分配内存时需要对该类对象初始化数据,释放内存时需要有可能需要释放对象内部的成员的内存,用new和delete就会去干这些事情,而调用mallloc()和free()函数,需要手动去处理类对象的构造和析构。这种情况下使用你上面的写法将会导致类成员的new分配出来的内存得不到释放而造成内存泄漏。也就是说C/C++的基本类型在new和delete运算符没有重载的时候,这样子操作是不会有大问题的,但是不是一个好的编程习惯,可读性差,容易让人误解,最好是成对出现:new出来的就使用delete释放, malloc分配的就用free释放。保持良好编程习惯有利于编程成长。
OliverXu
2012-10-11 · TA获得超过841个赞
知道小有建树答主
回答量:610
采纳率:0%
帮助的人:427万
展开全部
可以是可以,free是C的语法,和malloc之类的配对,new是C++的语法,和delete配对,但是不建议这么用,这和程序空间申请释放的机制有关系,C++的delete多了析构部分
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蓦然回首的人
2012-10-11
知道答主
回答量:12
采纳率:0%
帮助的人:13.2万
展开全部
可以用free释放,因为new的是内部数据类型,但是如果new的是非内部数据类型,需要用delete来释放。delete会调用析构函数,而free只是释放内存,不调用析构函数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友15c45bd
2012-10-11 · TA获得超过246个赞
知道小有建树答主
回答量:290
采纳率:0%
帮助的人:65.5万
展开全部
有new就一定要用delete搭配
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zyming1987
2012-10-11
知道答主
回答量:19
采纳率:0%
帮助的人:3.1万
展开全部
这样是不可以的,new只能和delete配合使用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
weichang0829
2012-10-11 · TA获得超过4764个赞
知道大有可为答主
回答量:2966
采纳率:33%
帮助的人:1014万
展开全部
基本类型应该是可以的,但是对于自建类型,建议使用delete []p; 的格式,否则很容易内存泄露。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(8)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式