和 都是在 C/C++ 中用于动态内存管理的工具,但它们的本质区别在于: 是面向对象的,而 是面向内存的。 换句话说, 只负责分配和释放生肉(纯粹的字节),而 不仅分配内存,还会把生肉做成熟菜(调用构造函数初始化对象,调用析构函数清理对象)。 以下是它们的核心区别对比: 1. 本质与身份 :是 C++ 的内置运算符(Operator),受编译器控制,就像 、 一样。 :是 C/C++ 标准库中的函数(Function),包含在 库中。 2. 构造函数与析构函数(最核心的区别) :分为两步。第一步分配足够的内存,第二步自动调用该类型的构造函数来初始化对象。 :分为两步。第一步自动调用该对象的析构函数清理资源,第二步释放内存。 :仅仅分配或释放指定字节数的内存,完全不知道“对象”的存在,绝不会调用构造和析构函数。 (如果用 分配带有虚函数或含有 等复杂成员的 C++ 类,会导致灾难性错误,因为对象没有被正确初始化。) 3. 类型安全与返回类型 :是类型安全的。你告诉它要什么类型,它就返回什么类型的指针(例如 返回 ),不需要强制类型转换。 :返回的是 (无类型指针)。在 C++ 中,...