Visual Studio 2010 Part14
■ このスレッドは過去ログ倉庫に格納されています
0061デフォルトの名無しさん
2011/04/29(金) 11:52:29.10zlibで言うと、inflate()やdeflate()のような基本的なAPIは問題ないけど
gzdopen()はCRTのファイルディスクリプタを渡すので
DLLとexeが両方同じバージョンのCRTのDLLとリンクしていなければ正しく動作しない
(両方/MT、でもダメなので注意)
CRTオブジェクトをモジュール境界をまたいで渡したり
片方でmalloc()したものを片方でfree()する必要があったりするケースは
全て問題が起きる
たとえばmalloc()の例で言うと、DLL側でアロケートしたものをexe側に開放して
貰う必要がある場合は、free()用の関数をDLL側から提供するようにすれば
アロケータとデアロケータの不一致は避けられるので、
自分でDLL作るときは最初からそういう風に問題のないように設計したほうがいい
■ このスレッドは過去ログ倉庫に格納されています