C 虚拟机上转储的分段故障核

C 虚拟机上转储的分段故障核,c,memory,segmentation-fault,virtual-machine,C,Memory,Segmentation Fault,Virtual Machine,在一个函数中,我创建了以下字符数组 char key1[500]=""; 我在函数中循环索引“I”,并通过索引initialIndex(全局索引)复制作为全局变量的inputFileArray的值 当我运行时,此语句导致错误分段错误(内核转储) ,这在使用VisualStudioC++编辑器编译的另一台机器上运行良好。当我试图在虚拟机上的Ubuntu13.10上运行这个程序时,我遇到了这个错误。感谢你的回答 当我运行时,此语句导致错误分段错误(内核转储) 学习使用调试器(通常是Linux上的G

在一个函数中,我创建了以下字符数组

char key1[500]="";
我在函数中循环索引“I”,并通过索引initialIndex(全局索引)复制作为全局变量的inputFileArray的值

当我运行时,此语句导致错误分段错误(内核转储)

,这在使用VisualStudioC++编辑器编译的另一台机器上运行良好。当我试图在虚拟机上的Ubuntu13.10上运行这个程序时,我遇到了这个错误。感谢你的回答

当我运行时,此语句导致错误分段错误(内核转储)

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

在调试器下运行程序,并验证
i<500

initialIndex

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


是的,bug通常是这样的:在一台机器上运行良好(看起来运行良好)的代码在下一台机器上崩溃

i
的值保持在
500
以下?您似乎忽略了基本上所有相关的代码,这基本上导致无法回答此问题。仅仅因为代码没有在另一台机器上出现故障,并不意味着您的索引是正确的。您可以在阵列之外为您的程序分配内存,这样即使在边缘上进行索引,也不会出错。然后,在另一台机器上,一旦您超出边界,您将超出操作系统分配给您的程序的内存,并且您将断开您的裤子。也就是说,提供更多的代码。您可能还想了解。
key1[i++]= inputFileArray[initialIndex++];