当我运行以下函数时,我得到一个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/)中运行它并查看它说的是什么。 –