还有一个malloc 与free 它们有什么区别呀,用哪个比较好?能混着用吗?例如用new 申请内存之后,用free释放内存,这样可以吗?
用new 申请内存之后,用delete释放内存
答案:2 悬赏:20 手机版
解决时间 2021-07-18 09:18
- 提问者网友:饥饿走向夜
- 2021-07-18 03:03
最佳答案
- 五星知识达人网友:掌灯师
- 2021-07-18 04:01
不能混用
new除了分配内存,还会调用对象的构造函数
同样delete出了释放分配的内存,还会在释放前调用对象的析构函数
这两个调用动作malloc和free都没有,如果你类里还有其他需要在构造函数里new出来或者需要在析构函数里delete的资源,用malloc而不是new就会造成对象构造失败,用free而不是delete就会造成内存泄露。
new除了分配内存,还会调用对象的构造函数
同样delete出了释放分配的内存,还会在释放前调用对象的析构函数
这两个调用动作malloc和free都没有,如果你类里还有其他需要在构造函数里new出来或者需要在析构函数里delete的资源,用malloc而不是new就会造成对象构造失败,用free而不是delete就会造成内存泄露。
全部回答
- 1楼网友:人類模型
- 2021-07-18 05:37
都是在堆上进行内存分配的
区别是new跟delete会调用对象的构造函数
而malloc 跟free不会
混着用是可以的 但是最好还是不要这样干
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯