猿问

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

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

我在C+中看到了分配和释放数据的多种方法,我理解当您调用malloc你应该打电话free而当您使用new应与之配对的运算符delete把两者混为一谈是错误的(例如,打电话)。free()在用new(接线员),但我不清楚什么时候应该使用mallocfree当我应该用newdelete在我的现实世界里。

如果你是C+专家,请告诉我你在这方面遵循的任何经验规则或惯例。


jeck猫
浏览 478回答 3
3回答

白衣非少年

除非你被迫使用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/free和malloc/delete.注意:这个问题的一些答案是无效的。int* p_scalar = new int(5);  // Does not create 5 elements, but initializes to 5int* p_array  = new int[5];  // Creates 5 elements
随时随地看视频慕课网APP
我要回答