今天我正在为我的代码写一个小小的Memory Profiler,并且第一次超载了operator new
。在这样做的时候,我认为语法是void* operator new(size_t sz)
。这的确与malloc
非常相似,您有void* malloc(size_t sz)
。void *在malloc与运算符new
这让我陷入思考,因为当你使用malloc
,你需要明确转换指针回到你的数据类型,而新的,你不需要这么做。编译器如何找出new
的正确数据类型,以及为什么有使其返回void *
?是不是T* operator new(size_t sz)
更直观?
在C中,您不必强制转换'malloc()'的返回值。实际上,投射最多是多余的,并且可能隐藏编译器在没有演员时会遇到的错误。 – pmg 2012-03-22 23:38:48
@pmg,冷静下来,这个问题不应该真的被标记为'C' – Shahbaz 2012-03-22 23:42:15
记住'免费'分配的数据'新' – 2012-03-22 23:43:28