分段错误进程返回139(0x8b)

时间:2012-12-03 18:03:12

标签: c++ linux segmentation-fault

我是Linux和Linux的新手。代码块。在构建下面的代码时,我收到此错误:

  

“分段错误进程返回139(0x8b)”

我知道这与记忆有关但我找不到问题。在使用Makefile编译文件或在终端中单独编译文件时,我没有收到任何错误。

main收到2个参数(argv) ComputersInNet.txt - > argv[1] Simulation.txt -> argv[2]

我无法弄清楚如何使用代码块将这些文件添加到项目中,在Windows(Visual Basic)中,代码也能正常运行。

我无法正确粘贴代码(5个文件:2 .h和3 .cpp),您可以从下面的链接下载它们,包括我用作参数的txt文件。

http://depositfiles.com/files/cv2bwmz74

1 个答案:

答案 0 :(得分:3)

发生了代码段问题,从Create_PC_List()调用子例程main()以创建计算机列表。

void Router :: Create_PC_List (char *fname) //Reads from file & creates list of computers
{
char C;
char* IPAD=NULL;
FILE* fp;
FILE* msg;
int counter=0;
fp = fopen (fname,"r"); //Reading from Argv parameter file - list of computers in the network
if(fp == NULL)
        cout << "Opening file failed: %s\n" << strerror(errno) << endl;
msg = fopen (fname, "r"); //Reading from Argv parameter file - list of computers in the network
    while((C=fgetc(fp)) != EOF) //Running trougth the file
{
    ...

输出:

Opening file failed: No such file or directory
followed  by segmentation fault.

我们可以看到fopen()失败,错误为"No such file or directory"。因此,您需要找到一种方法将三个文本文件添加到fopen()可用的代码块中。

提供给getc()的fp的分段错误的第二个原因是FILE *指针包含 NULL 地址,该地址不是有效的 FILE 宾语。