2012-12-03 2 views
1

저는 & 코드 블럭을 처음 사용했습니다. 아래 코드를 작성할 때 다음 오류가 나타납니다.세그멘테이션 폴트 프로세스가 반환되었습니다. 139 (0x8b)

"segmentation fault process returned 139 (0x8b)"

메모리와 관련이 있지만 문제를 찾을 수 없습니다. 파일을 Makefile로 컴파일하거나 터미널에서 별도로 컴파일하는 동안 오류가 발생하지 않습니다.

main 2 개 인자

(argv) ComputersInNet.txt - > argv[1] Simulation.txt -> argv[2]를 받고 나는 코드가 완벽하게 작동 윈도우 (Visual Basic의 경우) 또한, codeblocks를 사용하여 프로젝트에이 파일을 추가하는 방법을 알아낼 수 없습니다.

코드를 올바르게 붙여 넣을 수 없습니다 (5 개 파일 : 2 개 .h 및 3 개 .cpp). 아래 링크에서 다운로드 할 수 있습니다. 여기에는 인수로 사용하는 두 개의 txt 파일이 포함됩니다.

코드 조각 문제가 발생한다

http://depositfiles.com/files/cv2bwmz74

+4

글쎄, 하나의 시스템에서 매우 자주 segfault의 다른에서 잘 실행, 그리고 그 플랫폼에 의존, 그래서 나는 그것이 하나에서 작동 이유에 대해 걱정하지 것이며, 다른 사람은 아닙니다. 즉, 모든 포인터를 검사하여 NULL이 아닌 초기화되었는지 확인 했습니까? – RonaldBarzell

+4

코드를 여기에 게시하여 다운로드 및 유포하지 말고 –

+0

예, 방금 링크를 방문하여 다운로드 설정을 보았습니다. – RonaldBarzell

답변

2

, 서브 루틴 Create_PC_List()가 메인에서 호출() 컴퓨터의 목록을 만들 수 있습니다.

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() 오류 "해당 파일 또는 디렉토리"로 실패했습니다. 따라서 fopen()에 사용할 수있는 코드 블록에 세 개의 텍스트 파일을 추가하는 방법을 찾아야합니다.

세그먼테이션 결함에 대한 두 번째 이유는 fc가 getc()에 제공 한 FILE * 포인터가 유효한 FILE 객체가 아닌 NULL 주소를 포함하고 있기 때문입니다. 메모리 오버런의 결과는 오버런 된 메모리에 무엇에 의존하기 때문에

+0

빠른 리딩을 가져 주셔서 감사합니다!iv'e는 내가 전에 언급 한 것처럼이 파일들을 추가하려고 시도했지만, 나는 그것이 올바르게하고 있는지 의심 스럽다. 여기서 코드 블록에 파일 이름을 작성했습니다 : http://postimage.org/image/9kauxc42b/ 하지만 여전히 동일한 분할 오류가 발생합니다. 어떤 충고 ??? –

+0

@DavidFaiz이 .txt의 파일은 프로젝트 메뉴 -> 호스트 응용 프로그램이 아닌 프로그램 인수에 있어야한다고 생각합니다. CB 도움말 포럼에 문의하십시오. –

+0

이 링크에서 파일 이름을 쓸 영역이 없다는 것을 알 수 있습니다. postimage.org/image/9kauxc42b –