当前位置: 技术问答>linux和unix
求C的GTK+窗口中内存释放方法
来源: 互联网 发布时间:2016-04-20
本文导语: 大家好!有个棘手的问题,如何释放我在一个创建GTK+窗口中声明的结构体变量的指针?在什么地方释放?想请大家指点迷津。 代码如下,无关部分已略去。 void create_winNewplan ( HildonProgram* hilpro ) { ………………//...
大家好!有个棘手的问题,如何释放我在一个创建GTK+窗口中声明的结构体变量的指针?在什么地方释放?想请大家指点迷津。
代码如下,无关部分已略去。
感谢大家! 阿弥陀佛
代码如下,无关部分已略去。
void
create_winNewplan ( HildonProgram* hilpro )
{
………………//声明了一些窗体组件
DateTrans *dtInure = (DateTrans *)malloc(sizeof(DateTrans)); //分配给结构体DateTrans内存
………………//定义窗口部件的参数
dtInure->program = hilpro; //给结构体成员赋值
………………//回调函数
g_signal_connect (G_OBJECT (btTitlemodel), "clicked",
G_CALLBACK (dialog_calendar),
dtInure);//使用了该结构体做实参
感谢大家! 阿弥陀佛
|
具体情况具体分析,可以做一个类似垃圾收集器
全局的
一般可以在gtk_main_quit可以做处理
局部的
一般在程序函数调用后就可以free掉
关于gtk_window_new()
这些new出来的交给gtk自己处理。
|
晕,C语言没学好吧,肯定不会了,malloc你不free的话是不会释放掉的,
你注册下窗口的destroy事件,在里面free掉。
看你的代码,是个临时分配的,你在click的处理函数中使用完这个变量后free掉就可以了
你注册下窗口的destroy事件,在里面free掉。
看你的代码,是个临时分配的,你在click的处理函数中使用完这个变量后free掉就可以了
|
先释放结构体里面的指针,
再释放 结构体指针,
跟 c++一样,
先构造的后释放.
gtk的窗口,
gtk destrory.
再释放 结构体指针,
跟 c++一样,
先构造的后释放.
gtk的窗口,
gtk destrory.
|
void
create_winNewplan ( HildonProgram* hilpro )
{
.......
.......
free(dtInure);
}
这样应该就可以。