2
C ++の初期割り当てがCの割り当てよりもはるかに大きいのはなぜですか?
同じコードを使用する場合、コンパイラーを(CコンパイラーからC ++コンパイラーに)変更するだけで、割り当てられるメモリの量が変わります。これがなぜなのかよくわからないので、もっと理解したいと思います。これまでのところ、私が得た最良の応答は「おそらくI / Oストリーム」です。これはあまり説明的ではなく、C ++の「使用しないものにお金を払わない」という側面について疑問に思います。 ClangコンパイラとGCCコンパイラのバージョン7.0.1-8と8.3.0-6をそれぞれ使用しています。私のシステムは最新の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) Clang(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 …
138
c++
c
benchmarking