Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么我的C++;这么大?_C++_Size - Fatal编程技术网

C++ 为什么我的C++;这么大?

C++ 为什么我的C++;这么大?,c++,size,C++,Size,可能重复: 我刚刚开始阅读一些C++在线教程,第一节课是Hello World程序。当我将程序编译成可执行文件时,它的大小超过400kb,尽管它只是一个简单的Hello World控制台程序。应该这么大吗?如果没有,为什么会这样?我做错什么了吗 资料来源如下: #include <iostream> using namespace std; int main() { cout<<"Hello World"; cin.get(); } #包括 使用名称空

可能重复:

我刚刚开始阅读一些C++在线教程,第一节课是Hello World程序。当我将程序编译成可执行文件时,它的大小超过400kb,尽管它只是一个简单的Hello World控制台程序。应该这么大吗?如果没有,为什么会这样?我做错什么了吗

资料来源如下:

#include <iostream>
using namespace std;
int main()
{
    cout<<"Hello World";
    cin.get();
}
#包括
使用名称空间std;
int main()
{

CUT< P>静态连接C和/或C++运行时可以大大增加大小,编译程序包含调试信息可以增加大小。

可能是调试信息。如果你把它删去(通过在VisualStudio中发布版本,或者在Linux中使用命令)它会小得多。

不要将应用程序链接为静态。尝试将其动态化。

这几乎可以肯定是因为您创建了一个静态可执行文件,即可以独立运行且不依赖于运行时库的可执行文件。有关如何避免这种情况,请参阅编译器/链接器的文档

编辑:


从您的代码中,我得到13540字节用于动态链接的可执行文件(linux上的gcc 4.3.2),但6.7Mb用于静态链接的可执行文件。

在调试模式下构建将编译和链接未以任何方式优化(速度/大小)的代码,最终您将得到臃肿的exec,其中包括系统libs的调试版本

如果切换到发布模式,编译器和链接器可以优化为仅使用最终执行中所需的函数,也可以使用其发布版本。
这样,如果您选择了空间优化,您将“希望”得到一个更小的执行程序。

您如何编译您的程序?您是否构建了调试版本或发布版本?您使用的是什么编译器?什么操作系统?有许多因素会影响可执行文件的大小。我猜您将拥有一个调试版本。与调试/发布无关。这是一个问题这只是因为
会产生相当大的一次性成本。随着程序的增长,这种成本可以忽略不计。我使用的是与GCC捆绑在一起的Dev Cpp。我运行的是Windows 7 Enterprise。我不太确定你所说的调试构建是什么意思,我所做的就是单击菜单中的“编译并运行”。在我的GNU/Linux桌面上使用GCC编译它,生成一个7.1kb的可执行文件(没有任何可选标志)。如何使其动态?我使用的是dev-cpp。呃,抱歉,我不知道此IDE。刚才我与Google的移动连接太差。您好,我如何切换到发布模式?如果您使用的是Visual Studio,在IDE中您有默认的调试和发布模式选择,只需选择一个您想要的。如果您通过CLI进行编译,-g用于调试模式,用于发布。参见通用条款: