【发布时间】:2011-09-22 16:28:17
【问题描述】:
我知道segmentation fault 表示该进程试图访问它不允许访问的某些内存。
我正在运行其他人使用 C++ 编写的一些程序。当我的输入很大(大约 1GB)时,即使我请求了 30GB 内存,也会出现分段错误;而当输入大小很小时,它运行良好。
那我该怎么办?是因为内存不够吗?我真的是一个没有太多 C++ 知识的新手。我什至不知道代码的哪一部分控制了内存分配。
感谢 BLender,调试中的一行是:
Program received signal SIGSEGV, Segmentation fault.
0x0000003fbd653174 in _IO_vfscanf_internal ()
from /share/bin/intel/cc/10.1.015/lib/tls/x86_64/libc.so.6
【问题讨论】:
-
你应该从发布相关代码开始。
-
可能是程序中的硬编码约束。
-
是的,我可以显示代码……但是代码太复杂了……无论如何我都可以显示
-
您应该真正提及您正在使用的操作系统以及它是 32 位还是 64 位。
-
const float inf=10000000000;完全错误;浮点数有一个代表无穷大的值。后来将其转换为 int 更加错误。你应该使用 MAX_INT 或类似的。