0

我刚刚破解了 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);

    ...

执行时会导致段错误。我确信我犯了一个菜鸟错误,最终我会认识到错误是什么,但目前我无法弄清楚。我能够生成的 Google 结果也不是很有用。

有什么帮助吗?

4

1 回答 1

2

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

于 2012-12-18T00:43:37.153 回答