に関連し、私が構造次き:[C]構造の動的割り当てメモリ、GTK
typedef struct
{
GtkWidget* PoziomaLinijka;
GtkWidget* PionowaLinijka;
GtkWidget* Label1;
GtkWidget* Label2;
gint x,y;
} StrukturaDrawing;
を、後に、私はその構造を使用する機能を持っていると私にはないので、私は、ヒープ上に割り当てる必要がありますグローバル変数を使いたい。だから私はこのようにそれを割り当てる:
StrukturaDrawing* Wsk;
Wsk = (StrukturaDrawing*)malloc(sizeof(StrukturaDrawing));
if (!Wsk)
{
printf("Error\n");
}
をそして、それがエラーを返していませんし、また他の機能と素晴らしい作品、それは私がそのメモリを解放したかった私は、それはそう最終的に動作するように望んでいたように動作し、ここでの問題ですデバッグモードでは、コンパイル時に、
が発生します。GTK.exeの0x102d12b4でファーストチャンス例外が発生します。0xC0000005:0xfffffffcというアクセス違反です。 GTK.exeの0x102d12b4で未処理の例外が発生しました。0xC0000005:0xfffffffcという場所を読み取っているアクセス違反。
私はそのように、私の関数にコールバックを接続します。空きメモリと密接なプログラムに想定される
g_signal_connect(G_OBJECT(Okno), "destroy", G_CALLBACK(Wyjscie), Wsk);
が機能:
void Wyjscie(GtkWindow* window, GdkEvent* event, StrukturaDrawing* data)
{
gtk_main_quit();
free(data);
data = NULL;
}
すべてのヘルプは本当に感謝しています。