다음 함수를 실행할 때 SIGSEGV가 발생합니다. 나는 이유를 알 수 없다 ... 아무도 도와 줄 수 있습니까? 올바른 방향으로 나를 가리켜 주시겠습니까? 필자는 디렉터리 계층 구조에서 중복 파일을 검색하는 큰 프로그램의 일부분입니다.왜 glib로 SIGSEGV를 얻을 수 있습니까?
는 루프 테스트 조건을 수행 어쩌면 (루프 내부의 첫 번째 줄) 두 번째 filename = g_dir_read_name(dp);
제거
#include <stdio.h>
#include <stdlib.h>
#include <glib.h>
int main (int argc , char *argv[]) {
GError *error = NULL;
const gchar* filename = NULL;
gchar *directory_path = "/tmp";
GDir* dp = g_dir_open (directory_path, 0, &error);
if (error) {
g_warning("g_dir_open() failed: %s\n", error->message);
g_clear_error(&error);
return 1;
}
while ((filename = g_dir_read_name(dp))){
filename = g_dir_read_name(dp);
gchar* path = g_build_filename (directory_path, filename, NULL);
printf("%s\n", filename);
g_free (path);
}
return 0;
}
나는 glib에 익숙하지 않지만'gchar * directory_path = "/ tmp"'냄새가 난다. 그것을 const로 만드십시오. – eran
valgrind (http://valgrind.org/)에서 실행 해보고 그 내용을 확인하십시오. –