私はこのコードを持っています
unsigned char* MemoryPool::GetNext(unsigned char* pBlock)
{
unsigned char** ppChunkHeader = (unsigned char**)pBlock;
return ppChunkHeader[0];
}
ここから取得http://gamecode4.googlecode.com/svn/trunk/Source/GCC4/Memory/MemoryPool.cpp
unsigned char* から unsigned char** へのキャストが何をするのかわかりません。これらのコード行を追加すると:
unsigned char* MemoryPool::GetNext(unsigned char* pBlock)
{
unsigned char **ppChunkHeader = (unsigned char**)pBlock;
printf("ppChunkHeader %p\n", ppChunkHeader);
printf("pBlock %p\n", pBlock);
printf("sizeof(unsigned char*) = %i\n", sizeof(unsigned char*));
printf("ppChunkHeader[0] %p\n", ppChunkHeader[0]);
printf("&pBlock[0] %p\n", &pBlock[0]);
printf("ppChunkHeader[0] - &pBlock[0] = %p\n", (ppChunkHeader[0] - &pBlock[0]));
return ppChunkHeader[0];
}
出力は
ppChunkHeader 00DCB498
pBlock 00DCB498
sizeof(unsigned char*) = 4
ppChunkHeader[0] 00DCB4A1
&pBlock[0] 00DCB4A1
ppChunkHeader[0] - &pBlock[0] = 00000009
私のコードでは、pBlock が 9 つの要素の配列を指していることに言及することが重要だと思います。
ありがとうございました。