std::malloc/calloc/realloc/free 与纯 C 的 malloc/calloc/realloc/free 有什么不同吗

问题描述 投票:0回答:1

为什么 C++ 需要自己版本的 C 标准库 malloc/calloc/realloc/free 函数?它们看起来完全一样。我应该更喜欢在 C++ 中使用 std:: 版本吗?他们的行为会有所不同吗?

c++ c malloc
1个回答
1
投票

为什么 C++ 需要自己版本的 C 标准库 malloc/calloc/realloc/free 函数?

C++ 包括大部分 C 库的原因是交叉兼容性。特别是在 C++ 的早期,重要的是 C 程序可以轻松地逐步转换为 C++。

C 中的一个大问题是名称冲突。 C++ 引入了一种语言特性来缓解这个问题:命名空间。 C++ 标准库位于命名空间

std
中。由于前面提到的交叉兼容性,当使用 C 继承头文件包含在 C 标准库中的名称(例如
<stdlib.h>
)时,C++ 标准库会在全局命名空间中声明 C 继承名称。

他们的行为会有所不同吗?

没有。

malloc/calloc/realloc/free

我应该更喜欢在 C++ 中使用 std:: 版本吗?

您最好不要使用 C++ 中提到的任何函数。你几乎永远不需要它们。使用它们的一个罕见原因是当您用 C++ 增量地重写 C 程序时,并且您不想在一次更改中替换所有旧代码。

除了您提到的函数之外,C 标准库的某些部分在 C++ 中没有新的替代品。通过

std
命名空间使用它们。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.