请问new 申请一个char数组的内存地址空间,可以用free来释放吗?
10个回答
展开全部
new和delete是c++的运算符,在没有重载的时候,默认也是调用mallloc()和free(),由于c++的类有构造函数和析构函数,为类的对象指针分配内存时需要对该类对象初始化数据,释放内存时需要有可能需要释放对象内部的成员的内存,用new和delete就会去干这些事情,而调用mallloc()和free()函数,需要手动去处理类对象的构造和析构。这种情况下使用你上面的写法将会导致类成员的new分配出来的内存得不到释放而造成内存泄漏。也就是说C/C++的基本类型在new和delete运算符没有重载的时候,这样子操作是不会有大问题的,但是不是一个好的编程习惯,可读性差,容易让人误解,最好是成对出现:new出来的就使用delete释放, malloc分配的就用free释放。保持良好编程习惯有利于编程成长。
展开全部
可以是可以,free是C的语法,和malloc之类的配对,new是C++的语法,和delete配对,但是不建议这么用,这和程序空间申请释放的机制有关系,C++的delete多了析构部分
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以用free释放,因为new的是内部数据类型,但是如果new的是非内部数据类型,需要用delete来释放。delete会调用析构函数,而free只是释放内存,不调用析构函数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有new就一定要用delete搭配
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这样是不可以的,new只能和delete配合使用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
基本类型应该是可以的,但是对于自建类型,建议使用delete []p; 的格式,否则很容易内存泄露。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询