为了账号安全,请及时绑定邮箱和手机立即绑定

在什么情况下,我使用malloc和新的?

在什么情况下,我使用malloc和新的?

C++ C
jeck猫 2019-06-11 20:49:56
在什么情况下,我使用malloc和新的?我在C+中看到了分配和释放数据的多种方法,我理解当您调用malloc你应该打电话free而当您使用new应与之配对的运算符delete把两者混为一谈是错误的(例如,打电话)。free()在用new(接线员),但我不清楚什么时候应该使用malloc/ free当我应该用new/ delete在我的现实世界里。如果你是C+专家,请告诉我你在这方面遵循的任何经验规则或惯例。
查看完整描述

3 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

除非你被迫使用C,否则你应该永不使用 malloc..总用new.

如果您需要大量数据,只需执行以下操作:

char *pBuffer = new char[1024];

小心点,尽管这是不对的:

//This is incorrect - may delete only one element, may corrupt the heap, or worse...delete pBuffer;

相反,在删除数据数组时应该这样做:

//This deletes all items in the arraydelete[] pBuffer;

这个new关键字是C+实现它的方式,它将确保您的类型具有它的构造函数调用..这个new关键字也更多。类型安全鉴于malloc根本不安全。

我认为唯一有益的方法是malloc如果你需要更改缓冲区的大小数据。这个new关键字没有类似的方法,例如realloc..这个realloc函数可以更有效地扩展内存块的大小。

值得一提的是,你不能混为一谈。new/freemalloc/delete.

注意:这个问题的一些答案是无效的。

int* p_scalar = new int(5);  // Does not create 5 elements, but initializes to 5

int* p_array  = new int[5];  // Creates 5 elements


查看完整回答
反对 回复 2019-06-11
  • 3 回答
  • 0 关注
  • 477 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信