gdk_screen_get_default()和get_width()/ height()段错误

时间:2012-12-18 00:41:12

标签: c gtk

我刚刚破解了GTK开发的基础,并且正在尝试做一些有用的东西,这些东西对于我正在开发的应用程序的未来很有用。

具体地,

int main(int argc, char *argv[])
{
    GtkWidget *window = NULL, *label = NULL;
    GdkScreen *screen = NULL;
    gint width = 0, height = 0;
    char *resolution = NULL;

    gtk_init(&argc, &argv);

    if((screen = gdk_screen_get_default()) != NULL)
    {
        width  = gdk_screen_get_width(screen);
        height = gdk_screen_get_height(screen);
    }

    sprintf(resolution, "%d x %d", width, height);

    ...

执行时会导致段错误。我确信我犯了一个noob错误,最终我会认识到错误是什么,但目前我无法弄明白。我已经能够生成的Google结果也没有太大用处。

任何帮助?

1 个答案:

答案 0 :(得分:2)

一个问题是变量resolution指向NULL,因此sprintf肯定会导致未定义的行为(可能是崩溃)。代码应该为该变量分配内存(例如,resolution = malloc(somesize);)或在堆栈上声明它(例如,char resolution[somesize];