unsigned char* Data::getAddress(unsigned char* address)
{
strcpy((char*)address, (char*)this->_address);
return (unsigned char*)address;
}
int main()
{
Data d;
d.makealinkedlisthere();
while (d)
{
unsigned char address[256];
printf("0x%08x \r\n",d.getAddress(address));
d = d.getNext();
}
return 0;
}
最初の 2 つを返します (これは同じですが、異なるはずです [デバッガーから確認できます]...)。その後、クラッシュします。
リンクされたリストを作成するだけです。保護されたメンバーData* _next
... それらのチェーン。
unsigned char* は、返されるデータ構造のWindows 関数VirtualQueryEx
部分からのものです。MEMORY_BASIC_INFORMATION
this->_address = (unsigned char*)meminfo->BaseAddress; // casted from void*
void* ですが、他のコードでは unsigned char* に変換されています。デバッガーでは、16 進数として表されていることがわかります。
D1: + _address 0x7ffd5000 <Bad Ptr> unsigned char *
D1->_next:+ _address 0x7f6f0000 "áå•ú`©" unsigned char *
D1->_next->_next+ _address 0x7ffb0000 " " unsigned char *