在SPOJ上提交解决方案时,我发现我的程序使用了16M的内存,即使我的程序使用了一个整数变量.
这是自然的还是我错过了什么?
#include <iostream>
int main(void)
{
int x;
while(true)
{
std::cin >> x;
if(x == 42)
{
break;
}
std::cout << x << "\n";
}
return 0;
}
使用的编译器是gcc 6.
最佳答案 如果你运行调试信息(makefile中的strip命令会将其拉出来),并且你正在构建优化或非优化,这是相当自然的.
尝试将-s和-O添加到GCC命令(如果尚未添加).这将构建您的可执行文件优化到一个不错的程度,并从可执行文件和其他一些东西中删除符号表.应该显着减少你的内存使用量.
如果你想进一步优化你的内存,你也可以使用GCC自定义堆栈大小,你可以尝试将它减少到KB,以便在那里做一些基础.
总而言之,对于未经优化/调试加载的可执行文件,这是相当正常的.