當我運行以下函數時,我得到一個SIGSEGV。我無法弄清楚爲什麼... 任何人都可以幫忙嗎?把我指向正確的方向?我認爲它是掃描目錄層次結構中重複文件的較大程序的一部分。爲什麼我會用glib獲得SIGSEGV?
#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」'聞。使其成爲常量。 – eran
嘗試在valgrind(http://valgrind.org/)中運行它並查看它說的是什麼。 –