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

1つの問題は、変数resolutionがNULLを指しているため、それをsprintfすると、未定義の動作(クラッシュの可能性が高い)が確実に発生することです。コードは、その変数にメモリを割り当てるか(eg、resolution = malloc(somesize);)、スタックで宣言する必要があります(eg、char resolution[somesize];

于 2012-12-18T00:43:37.153 に答える