当前位置: 首页 > 面试题库 >

在Linux上的C ++源文件上运行'gcc'会给出“ cc1plus:内存不足分配…”错误消息

云焱
2023-03-14
问题内容

在Ubuntu上使用’gcc’编译C ++源文件时遇到一个令人费解的问题。解决了这个问题后,我想在这里发布它,以免其他人难以解决。

为了这份报告,我们将最简单的C ++“ Hello,World”程序存储在main.cpp中:

#include <stdio.h>

int main (int argc, char *argv[])
{
    return 0;
}

当我运行命令时:

gcc main.cpp

我收到错误消息:

cc1plus: out of memory allocating 1677721600 bytes after a total of 475136 bytes

我确认我正在编译正确的位(即32位)。我做错了什么?


问题答案:

事实证明,我已将C ++源文件另存为UTF-16
Unicode编码的文件,并在文件的开头加上了领先的Unicode字节顺序标记(BOM)字节。该文件在Windows系统上保存为UTF-16,提交到版本控制系统,然后签出到Linux。gcc确实支持Unicode编码为UTF-8,但不支持Unicode编码为UTF-16。

解决方案是将源文件转换回标准的非Unicode编码。



 类似资料:
  • 问题内容: 编译Android项目时如何解决? 升级到Android Studio版本1后,我得到了这个。但是,我不认为这是问题所在。当我开始将应用程序升级到SDK 21之前(这是在SDK 20之前)的可能性最大。但是我也不是很确定。 我在Google周围搜索了一些 修复程序,但找不到可行的解决方案。大多数修复是针对Eclipse IDE的。 这是编译时遇到的完整logcat错误: 是因为我使用了

  • 在为react本机项目进行发布版本构建时,我遇到了这个错误: 做了一些研究,做了一些修改,具体如下: 我仍然无法摆脱这个错误。任何永久的方法来摆脱这个错误和它是如何造成的??

  • 有时,我的应用程序在启动时会随机出现故障,它会在应用程序类中崩溃,用户无法再次打开应用程序,直到他们进入设置并清除应用程序数据 “DiskbasedBache”试图分配超过1GB的内存,原因并不明显 我怎么才能让这一切不发生?这似乎是Volley的一个问题,或者是一个基于自定义磁盘的缓存的问题,但是我没有立即看到(从堆栈跟踪中)如何‘清除’这个缓存,或者做一个条件检查或者处理这个异常 欣赏洞察力

  • 问题内容: 节点版本为 崩溃期间的内存使用情况未超出 产生此错误的代码: 要检查是否存在递归堆栈大小问题,我使用–stack-size = 60000参数运行了下一个代码 并得到了 然后,我运行了导致严重错误的代码:CALL_AND_RETRY_LAST分配失败-使用相同的–stack-size = 60000参数处理内存不足,并且没有得到。 因此,我得出结论与递归堆栈大小没有共同之处。 我该如何

  • 在我的构造函数中,我可能不得不缩短它。虽然我第一次尝试就开始工作了。记录cat消息: 05-08 19:09:46.035:E/dalvikvm-heap(420):28字节分配内存不足。

  • 我正在将一个10GB的文件加载到内存中,我发现即使去掉任何额外的开销,只将数据存储在一个阵列中,它仍然需要占用53 GB的ram。这对我来说似乎太疯狂了,因为我正在将一些文本数据转换为long,而long占用更少的空间,将其余的转换为char*,char*应该占用与文本文件相同的空间。我试图加载的文件中有大约1.5亿行数据。当我按照下面的方式加载时,有什么原因会占用这么多内存吗? 这里有三个文件,