我有一个使用动态加载库的大应用程序。在程序结束时终止它或者segfaults或者吐出一条消息“glibc检测到损坏的双链表”。望着Valgrind的输出,我认为是这样的话是什么: 让我们说我们有三个文件:gcc,C++:static string member variarible导致堆损坏/分段错误
utilities.c - compiled with -fPIC and used ar and ranlib to create utilities.a.
dynamicallyloaded.c- compiled with -fPIC and -shared and linked with utlities.a to generate dynamicallyloaded.so
main.c - compiled with -fPIC and linked with utilities.a to create main. main dynamically loads and uses dynamicallyloaded.so .
utilities.h - delclared a class IfTrackerFile with AubFileName as a static string member like static string AubFileName;
utilities.cpp - defines the static variable: string IfTrackerFile::AubFileName;
的valgrind出来说有是无效的自由/删除/删除就行了: 串IfTrackerFile :: AubFileName;
我不知道发生了什么事。 真正感谢在这方面的任何帮助/方向。
使用静态库不是微不足道的。将所有内容编译为共享库,并让编译器将其整理出来。 – 2010-08-19 15:32:17