Re: [問題] GTK+ widget 陣列與記憶體配置

看板LinuxDev作者 (skyl)時間14年前 (2011/06/03 18:34), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《VElysian (致中和)》之銘言: : ※ [本文轉錄自 C_and_CPP 看板 #1DuzZJ3h ] : 程式碼(Code):(請善用置底文網頁, 記得排版) : void ButtonCallBack( GtkWidget button, gpointer data ); : int main(int argc, char* argv[]) : { : GtkWidget* button[3][3]; : button[0][0] = (GtkWidget*)g_malloc( sizeof(GtkWidget) * 3 * 3 ); : ... : printf("toggle_button[%i][%i] = %p\n", : 1, 2, toggle_button[1][2] ); : ... : g_signal_connect(GTK_OBJECT( button[1][2] ), : "clicked", : GTK_SIGNAL_FUNC( ButtonCallBack ), : (gpointer)button[0][0]); : ... : } : void ButtonCallBack( GtkWidget button, gpointer data ) { : printf("(GtkWidget*)data + %i*%i+%i = %p\n", : 1, 3, 2, (GtkWidget*)data + 1 * NODE + 2 ); : } 你指標陣列配置記憶體的用法錯了, 參考看看以下的方法 void ButtonCallBack( GtkWidget* button, gpointer data ); int main(int argc, char* argv[]) { GtkWidget* button[3][3]; for ( int row = 0; row < 3; row++ ) for ( int col = 0; col < 3; col++ ) button[row][col] = (GtkWidget*)g_malloc( sizeof(GtkWidget) ); ... printf("toggle_button[%i][%i] = %p\n", 1, 2, toggle_button[1][2] ); ... g_signal_connect(GTK_OBJECT( button[1][2] ), "clicked", GTK_SIGNAL_FUNC( ButtonCallBack ), (gpointer)button[0][0]); ... } void ButtonCallBack( GtkWidget* button, gpointer data ) { printf("(GtkWidget*)data + %i*%i+%i = %p\n", 1, 3, 2, (GtkWidget*)data + 1 * NODE + 2 ); } -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.128.209.67
文章代碼(AID): #1DwBYqZF (LinuxDev)
文章代碼(AID): #1DwBYqZF (LinuxDev)