C++相談室 part30
■ このスレッドは過去ログ倉庫に格納されています
0148デフォルトの名無しさん
NGNG00402628 jmp Singleton::getInstance+81h (00402631)
0040262A mov dword ptr [ebp-58h],0
00402631 mov eax,dword ptr [ebp-58h]
00402634 mov dword ptr [ebp-10h],eax
00402637 mov dword ptr [ebp-4],0FFFFFFFFh
0040263E mov ecx,dword ptr [ebp-10h]
00402641 mov dword ptr [Singleton::instance (00405274)],ecx ----- *3
340: LeaveCriticalSection(&Singleton::cs);
00402647 mov esi,esp
00402649 push offset Singleton::cs (00405258)
0040264E call dword ptr [__imp__LeaveCriticalSection@4 (00406224)]
00402654 cmp esi,esp
00402656 call _chkesp (00403004)
*1で一時領域にメモリの確保
*2でコンストラクタの呼び出し
*3で変数instanceへの格納
と、>>134でいう後者のパターンで構築が行われているので、
VCの吐き出したコードには問題がない。
じゃあ、前者のパターンのコードを掃き出すコンパイラがあったらどうなる?
Javaと同じ問題を抱える事になるね。
■ このスレッドは過去ログ倉庫に格納されています