4
如果我在運行時加載dll/so文件(即使用LoadLibrary()
或dlopen()
),那麼C++ atexit()
函數的行爲是什麼?如果在應用程序退出之前卸載庫,它會被調用嗎?我能期待所有平臺上的相同行爲嗎? (具體來說,windows和unix-like系統)atexit()在運行時加載的dll /中的行爲是什麼?
如果我在運行時加載dll/so文件(即使用LoadLibrary()
或dlopen()
),那麼C++ atexit()
函數的行爲是什麼?如果在應用程序退出之前卸載庫,它會被調用嗎?我能期待所有平臺上的相同行爲嗎? (具體來說,windows和unix-like系統)atexit()在運行時加載的dll /中的行爲是什麼?
在windows下:當你調用FreeLibrary的時候,每個dll都會執行atexit
函數鏈。需要注意的是,dll以未指定的順序卸載,因此不要添加依賴於某些其他dll的全局變量的atexit
處理程序。
以下是一些更多信息鏈接:http://msdn.microsoft.com/en-us/library/988ye33t.aspx