次のコンストラクタがあります。
MutexWrapper::MutexWrapper(Mutex * pMutex)
{
DebugPrint("0x%x", pMutex); // displays 0x1f83e54
}
そして、次の関数で呼び出されます。
void OnReviewBuffer_Callback( void * pUserData )
{
ReviewBuffer * thePointer = (ReviewBuffer *) pUserData;
DebugPrint("0x%x", thePointer); // this displays 0x1f83e48
MutexWrapper theMutexWrapper(thePointer);
}
残念ながら、ReviewBuffer
- の完全な定義を提供することはできませんが、以下で十分であることを願っています。
class ReviewBuffer : public StreamConsumer_Base, public Mutex
{
...
};
問題は、出力するthePointer
と が得られることです0x1f83e48
が、コンストラクター内から出力される値は です0x1f83e54
。
ポインターの値が異なるのはなぜですか?これは、ポインターのコピーを渡す値渡しに関係していますか?