Re: [問題] GTK+ widget 陣列與記憶體配置
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
LinuxDev 近期熱門文章
PTT數位生活區 即時熱門文章