58同城C++开发面试题及参考答案
malloc 和 new 的区别是什么?
在 C++ 中,malloc
和 new
是两种用于动态内存分配的机制,它们在底层实现、功能特性和适用场景上存在显著差异。
底层实现与类型安全
malloc
是 C 语言标准库函数(stdlib.h),通过指定所需内存的字节数进行分配,返回 void*
指针,需要手动转换为目标类型。例如:
int* ptr = (int*)malloc(sizeof(int));
这种分配方式缺乏类型检查,若类型转换错误可能导致未定义行为。而 new
是 C++ 的运算符,会自动计算对象类型所需的内存大小,并返回对应类型的指针,无需手动转换:
int* ptr = new int;
new
的类型安全性避免了潜在的类型不匹配问题,提高了代码的健壮性。
对象构造与析构
malloc
仅分配内存&#