struct exec_s{
GtkWidget *login,*password,*recipients,*local_part,*type,*domain;
char *conninfo;
};
conninfo[200];
send->login=login;
send->domain=domain;
send->password=password;
send->conninfo=conninfo;
g_print("%s\n",send->conninfo);<-- тут все хорошо и все как надо и данные из него отображаются
g_signal_connect (G_OBJECT (button), "clicked",
G_CALLBACK (add),(gpointer)send);<- предаю структуру
add(GtkWidget *widget,struct exec_s *parm){
g_print("%s\n",parm->conninfo);<- все данные кроме conninfo в нормальном состоянии - а сам conninfo пуст 0_o
}
how?
gtk struct
Модератор: Модераторы разделов
-
alfss
- Сообщения: 262
Re: gtk struct
вобшем хз что было -_- перезаписывало адрес
просто сделал в структуре массив а не ссылку
но все ровно непонятно <_<
просто сделал в структуре массив а не ссылку
но все ровно непонятно <_<
-
d_n_k
- Сообщения: 636
- ОС: Gentoo GNU/Linux
Re: gtk struct
Ну наверно ты передаешь указатель на переменную в стеке другой функции, а потом к ней обращаться когда функция уже отработала, те переменной уже давно нет.
удивительно как ты еще сегфалт не получил коли пишешь в таком стиле.
поменяв char* на char [...] ты копируешь память. те обращаешься не к переменной на стеке в другой функции.
зы: по приведенному когду абслютно ничего не понятно
зыы: надеюсь send укзывает куда-то в кучю, а не на стек
зыыы: не забывай вызывать функции g_object_ref когда присваеваешь указатель на виджет куда-нибудь и g_object_unref когда забиваешь на указатель, а то в какая-то функия посчитает что виджет уже не нужен и освободит его, а ты к нему обращаешься...
удивительно как ты еще сегфалт не получил коли пишешь в таком стиле.
поменяв char* на char [...] ты копируешь память. те обращаешься не к переменной на стеке в другой функции.
зы: по приведенному когду абслютно ничего не понятно
зыы: надеюсь send укзывает куда-то в кучю, а не на стек
зыыы: не забывай вызывать функции g_object_ref когда присваеваешь указатель на виджет куда-нибудь и g_object_unref когда забиваешь на указатель, а то в какая-то функия посчитает что виджет уже не нужен и освободит его, а ты к нему обращаешься...
все сказанное есть имхо...
-
alfss
- Сообщения: 262
Re: gtk struct
насчёт разрушения я думал - просто не верилось.
ибо если без g_signal то все путём шло))
насчёт
g_object_ref
насчет структуры>
если вы считаете что я делаю где-то что-то не так - буду рад к критике и указания на примеры как надо.
ибо если без g_signal то все путём шло))
насчёт
g_object_ref
Код:
----то есть если я хочу передать то должно выглядеть так??--
domain=gtk_entry_new();
g_object_ref(domain);
-----------------------------------
насчет структуры>
Код:
struct exec_s *send;
send=(struct exec_s *)malloc(sizeof(struct exec_s));
если вы считаете что я делаю где-то что-то не так - буду рад к критике и указания на примеры как надо.
-
sergeyvp
- Сообщения: 807
- ОС: ubuntu
Re: gtk struct
Вобще было бы неплохо выкладывать не кусок кода, а пример готовый к компиляции с комментариями о возникшей проблеме,
чтобы люди не ломали голову откуда что у вас там взялось и куда должно привести.
-
d_n_k
- Сообщения: 636
- ОС: Gentoo GNU/Linux
Re: gtk struct
Код: Выделить всё
domain=gtk_entry_new();
g_object_ref(domain);нет так конечно. когда объект только создается у него счетчик ссылок = 1.
когда ты один указатель на объект присваиваешь другому тогда и надо делать
вот тут
Код: Выделить всё
send->login=login;
send->domain=domain;
send->password=password;надо сделать обязательно.
например так
Код: Выделить всё
send->login=g_object_ref(login);все сказанное есть имхо...