当前位置:  技术问答>linux和unix

回调函数中疑似内存溢出,GTK+

    来源: 互联网  发布时间:2016-05-13

    本文导语:  我的代码又出现了一个问题,回调函数执行第二遍会让程序挂掉,且无任何提示信息。 请看我的代码,实现了一个点击按钮后,为主窗口返回所选择的日期之对话框。 回调函数中疑似内存溢出,不知道具体该如何...

我的代码又出现了一个问题,回调函数执行第二遍会让程序挂掉,且无任何提示信息。

请看我的代码,实现了一个点击按钮后,为主窗口返回所选择的日期之对话框。

回调函数中疑似内存溢出,不知道具体该如何改进,请高手点睛。


void dialog_calendar (GtkEntry *widget,
                      DateTrans *dtEntry){ //DateTrans是我自定义的结构体指针,分别指向一个窗口和输入框
   
   GtkWidget *dlCalendar;
   GtkWidget *vbCalendar;
   GtkWidget *calendar;
   GtkWidget *hbb;
   gint result;
   guint year;
   guint month;
   guint day;
   char *calendardate;
   
   dlCalendar = gtk_dialog_new_with_buttons ("Calendar",
                                             GTK_WINDOW(dtEntry->window),
                                             GTK_DIALOG_MODAL,
                                             GTK_STOCK_CLEAR,
                                             GTK_RESPONSE_NO,
                                             GTK_STOCK_CANCEL, 
                                             GTK_RESPONSE_REJECT,
                                             GTK_STOCK_OK, 
                                             GTK_RESPONSE_OK,
                                             NULL);
                                            
   gtk_dialog_set_has_separator (GTK_DIALOG (dlCalendar), FALSE);
   
   vbCalendar = GTK_DIALOG (dlCalendar)->vbox;
   gtk_widget_show (vbCalendar);

   calendar = gtk_calendar_new ();
   gtk_widget_show (calendar);
   gtk_box_pack_start (GTK_BOX (vbCalendar), calendar, TRUE, TRUE, 0);
   
   hbb = GTK_DIALOG (dlCalendar)->action_area;
   gtk_widget_show (hbb);
   gtk_button_box_set_layout (GTK_BUTTON_BOX (hbb), GTK_BUTTONBOX_END);

   
   result = gtk_dialog_run(GTK_DIALOG(dlCalendar));
   
   switch (result){
    case  GTK_RESPONSE_NO:
       gtk_entry_set_text(GTK_ENTRY(dtEntry->entry), "");
       break;
    case GTK_RESPONSE_OK:
       gtk_calendar_get_date(GTK_CALENDAR(calendar),
                             &year,&month,&day);
       g_sprintf(calendardate,"%d-%d-%d",year,month,day);
       gtk_entry_set_text(GTK_ENTRY(dtEntry->entry), 
                          calendardate);
       break;
   }
   //free(calendardate);   //加了这句后,第一次执行该函数就会挂调。
   gtk_widget_destroy(dlCalendar);

}


|
指针calendardate没初始化

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 回调的意思是什么?
  • 如何在urb回调函数中访问共享资源?
  • 关于回调函数的问题
  • Ollydbg的TLS回调捕获插件 TLSCatch
  • 在c和c++中实现函数回调
  • 如何实现Java下的回调函数!
  • linux下c++怎样实现回调(CALLBACK)函数? iis7站长之家
  • Gtk_Entry调用回调函数失败
  • python回调函数的使用方法
  • 谁给我讲讲回调函数的概念???
  • c++回调之利用sink示例
  • gtk 中回调函数传值问题
  • GNOME中如何在按钮的回调函数返回之前刷新GtkImag中的图像
  • gtk 回调函数的参数传递问题!
  • linux下怎么声明回调函数?
  • GtkClist 按一次确定键,为什么调用了两次按键回调函数?
  • 如何将回调函数和FD绑到一起?
  • 在open中成功提交了urb,usb_submit_urb 返回值为0,但是为什么不进 urb回调函数?
  • linux下c++怎样实现回调(CALLBACK)函数?
  • 回调函数中的线程不能正确执行,大家帮忙看看吧,先谢谢了!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3