gpt4 book ai didi

c++ - C++ 运行时是否总是需要 malloc()?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:29:01 25 4
gpt4 key购买 nike

我有一个运行裸机的 C++ 应用程序,我希望它尽可能小。

我没有在任何地方使用动态内存分配。我没有使用任何 STL 函数。我还用空函数覆盖了所有“删除”和“新建”变体。尽管如此,当我查看经过排序的符号列表时,我发现 malloc() 仍然是我编译的二进制文件中最大的项目之一。如果我能摆脱它,我可以将我的二进制文件缩小大约 25%。

C++ 运行时是否通常需要 malloc() 来进行幕后类型工作?

(如果重要的话,我正在为 Microblaze 架构使用 Xilinx 的 gcc 分支)

最佳答案

程序对 malloc() 的依赖可能发生在 C 和 C++ 中,即使程序没有直接使用它们。这是编译器和标准库的实现质量问题,而不是标准的要求。

这实际上取决于编译器启动代码(进行设置以便可以调用 main() 的代码)的工作方式以及标准库代码的实现方式。

例如,在 C 和 C++ 中,启动代码(在托管环境中)需要收集有关命令行参数的信息(可能复制到某个分配的缓冲区),连接到标准文件/流(如 std::C++ 中的 coutstd::cin,以及 C 中的 `stdout 和 stdin)。这些事情中的任何一个都可能涉及动态内存分配(例如,用于与标准流关联的缓冲区)或执行程序实际上不需要的代码。

关于c++ - C++ 运行时是否总是需要 malloc()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30271822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com