我有一個使用動態加載庫的大應用程序。在程序結束時終止它或者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