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

GTK程序在退出时出现free错误

    来源: 互联网  发布时间:2016-12-01

    本文导语:  用GTK写了一个OSD库,编译成.so。主程序使用界面时就调用.so中的方法。 功能都实现了,但是调用exit(0)或者gtk_main_quit退出程序时提示 *** glibc detected ***  free(): invalid pointer: 0x080ba0c0 *** 或者 *** glibc detected ***  ...

用GTK写了一个OSD库,编译成.so。主程序使用界面时就调用.so中的方法。
功能都实现了,但是调用exit(0)或者gtk_main_quit退出程序时提示

*** glibc detected ***  free(): invalid pointer: 0x080ba0c0 ***
或者
*** glibc detected ***  double free()

应该是释放资源时出错,可实在找不到哪里出了问题。

gdb 调试出错的地方在:
where
#0  0xb7fe1424 in __kernel_vsyscall ()
#1  0xb7c89941 in raise () from /lib/libc.so.6
#2  0xb7c8ce42 in abort () from /lib/libc.so.6
#3  0xb7cc1305 in ?? () from /lib/libc.so.6
#4  0xb7ccb501 in ?? () from /lib/libc.so.6
#5  0xb7ccfec6 in free () from /lib/libc.so.6
#6  0xb7ea9441 in operator delete(void*) () from /usr/lib/libstdc++.so.6
#7  0xb7e8bacd in std::basic_string::_Rep::_M_destroy(std::allocator const&) ()
   from /usr/lib/libstdc++.so.6
#8  0x0805d41b in CStdStr::~CStdStr() ()
#9  0xb7c8ea68 in __cxa_finalize () from /lib/libc.so.6
#10 0xb7f0ae74 in __do_global_dtors_aux () from /usr/lib/libGTKOSD.so
#11 0xb7f30a10 in _fini () from /usr/lib/libGTKOSD.so
#12 0xb7ff0d66 in ?? () from /lib/ld-linux.so.2
#13 0xb7c8e69e in ?? () from /lib/libc.so.6
#14 0xb7c8e70f in exit () from /lib/libc.so.6
#15 0xb7c75cef in __libc_start_main () from /lib/libc.so.6
#16 0x08059cf1 in _start ()


在网上找了个方法 export MALLOC_CHECK_=0,这样虽然能屏蔽调打印的语句,但是没有实际上解决这个问题。

不知道谁遇到过?


|
仔细检查代码吧,好像没什么好办法。

*** glibc detected *** free(): invalid pointer: 0x080ba0c0 ***
试图free一个不是由malloc得到的指针,比如这样
int i;
free(&i);  // invalid pointer

*** glibc detected *** double free()
同一指针free了两次,比如
char p=malloc(100);
free(p);
free(p);  // double free

|
应该是你手动delete什么组件了。 
或是你乱用destroy信号了,那个信号不能随便用,想用就用delete。

gtk的所有组件是自动删除的,不能手动delete。

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












  • 相关文章推荐
  • gtk+ 和glade错误求助
  • 如何进行gtk的编译,我一直出来路径错误?
  • gtk编程中的警告错误啊,怎么解决啊?????
  • (来者有分)AIX 下的gtk编程错误 collect2: /opt/freeware/lib/libintl.a: not a COFF file
  • gtk2不能显示中文,运行时错误:WARNING **: Invalid UTF8 string passed to pango_layout_set_text
  • GTK+遇到一个超怪异的错误,定义的结构体赋值就出错。
  • 搞GTK环境时,遇到如下的错误,找不到lpython2.7,弄了半天也没好,大家帮我看看
  • 关于gtk的目录问题,我的目录是 gtk-2.0/gtk/gtk.h ??
  • Redhat linux9.0 下Gtk+编程的#include <gtk/gtk.h>问题
  • 【重要】gtk+ 编译gtk+的问题,不同于一般gtk的搭建--1000分,问题解决了,开号给分,决不食言!大家都来看看
  • gtk 和 gtk+ 有什么区别?
  • centos5.4中安装gtk时,yum库最新版是gtk2.10,如何更新yum库安装gtk2.12
  • 我使用GTK+2.0写界面程序时,怎么找不到gtk.h文件?
  • GTK+ gtk_tree问题
  • gtk for win 和 gtk for linux 下的程序问题?
  • GTK窗口前端显示及GTK窗口闪烁
  • 用GTK开发的程序如何在没有GTK动态连接库的Linux里运行?
  • 【GTK】GTK中有没有这个widget?
  • 我想学习GTK+2.0,请问如何准备GTK编程环境???
  • [GTK] gtk最小化问题与恢复问题
  • 【gtk+】初学gtk+,请教一个问题
  • 【gtk】关于gtk布局问题
  • 本人刚学gtk编程,留下油箱,欢迎喜欢gtk编程的朋友和我交流啊!!!!
  • 大家好,想知道gtk与gtk+有什么区别?
  • 关于GTK中gtk_widget_hide()的问题
  • gtk编程问题,如何在一个线程中向gtk控件发送一个expose_event消息
  • gtk中如何获取gtk_text_view中的输入内容?


  • 站内导航:


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

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

    浙ICP备11055608号-3