06/08/09 18:55:44
>>733-734
どうして__declspec(thread)を外すなんて思考に行き着いたのかは知らんが、
そんなもんが付いてる以上は、それってTLSだろ?
ブチ落ちてたのはDLLの中の話だったりしないか?
ランタイムで後から読み込んだDLLの中で__declspec(thread)使ってると
オブジェクトの内容なんか保証されないぞ。
URLリンク(msdn2.microsoft.com)
の一番最後のところだ。
__declspec(thread) char sz[1000];
BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
for(int i=0; sizeof(sz)/sizeof(sz[0])>i; ++i) sz[i] = 0;
return TRUE;
}
こんなDLLをLoadLibrary()するだけで落とせる。
落ちない可能性もあるが、いずれにせよsz周辺のメモリは確保なんかされてないので、
動いててもただの偶然だ。