【问题标题】:Segmentation fault Core dumped on virtual machine分段错误核心转储到虚拟机上
【发布时间】:2014-04-20 16:33:24
【问题描述】:

在一个函数中,我创建了以下 char 数组。

char key1[500]="";

我在函数中循环遍历索引“i”,并通过索引 initialIndex(全局索引)复制全局变量 inputFileArray 的值。

key1[i++]= inputFileArray[initialIndex++];

当我运行时,此语句导致错误 Segmentation Fault(core dumped)。

顺便说一句,这在我使用 Visual Studio C++ 编辑器编译的另一台机器上运行良好。当我尝试在虚拟机上的 ubuntu 13.10 上运行它时出现此错误。感谢您的回答。

【问题讨论】:

  • i的值低于500?
  • 您似乎基本上省略了所有相关代码,这基本上无法回答。
  • 仅仅因为代码在另一台机器上没有段错误并不意味着你的索引是正确的。您可以在数组之外为您的程序分配内存,因此即使您在边缘索引,也可以说,您不会出现段错误。然后在另一台机器上,一旦你越界,你就会超出操作系统分配给你的程序的内存,你就会出现段错误。 IE。提供更多代码。
  • 您可能还想了解undefined behavior

标签: c memory segmentation-fault virtual-machine


【解决方案1】:

这个语句在我运行时导致错误 Segmentation Fault(core dumped)。

学习使用调试器(通常是 Linux 上的 GDB)。你可能想开始here

在调试器下运行您的程序,并验证 i < 500
initialIndex < sizeof(inputFileArray)

这在另一台机器上运行良好

是的,错误通常是这样的:在一台机器上运行良好(似乎运行良好)的代码在另一台机器上崩溃。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-25
    • 2021-06-03
    相关资源
    最近更新 更多