提交有关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。
答案 0 :(得分:1)
如果您正在运行调试信息(makefile中的strip命令会将其拉出),并且正在构建优化或未优化的软件,这是很自然的。
尝试将-s和-O添加到GCC命令(如果尚未添加)。这将构建经过优化的可执行文件,并从可执行文件以及其他一些内容中删除符号表。应该会大大减少您的内存使用量。
如果要对内存进行进一步的优化,也可以使用GCC自定义设置堆栈大小,也可以尝试将其减小为KB,从而在此基础上有所作为。
对于未优化/调试加载的可执行文件,总而言之,这很正常。