为什么C ++的初始分配比C大得多?
当使用相同的代码时,只需更改编译器(从C编译器到C ++编译器)将更改分配的内存量。我不太确定为什么会这样,并且想进一步了解它。到目前为止,我得到的最好的答复是“可能是I / O流”,它不是很具描述性,使我想知道C ++的“您不用为不使用的东西付钱”。 我正在使用分别为7.0.1-8和8.3.0-6的Clang和GCC编译器。我的系统在最新的Debian 10(Buster)上运行。基准通过Valgrind Massif完成。 #include <stdio.h> int main() { printf("Hello, world!\n"); return 0; } 所使用的代码不会更改,但是无论我是以C还是C ++进行编译,它都会更改Valgrind基准测试的结果。但是,这些值在编译器之间保持一致。该程序的运行时分配(峰值)如下: GCC(C):1,032字节(1 KB) G ++(C ++):73,744字节(〜74 KB) lang(C):1,032字节(1 KB) Clang ++(C ++):73,744字节(〜74 KB) 为了进行编译,我使用以下命令: clang -O3 -o c-clang ./main.c gcc -O3 -o c-gcc ./main.c clang++ -O3 -o cpp-clang ./main.cpp g++ -O3 …