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;
}
처음 두 개를 반환합니다 (동일하며 디버거와 다를 수 있습니다 ...) 다음 충돌이 발생합니다.C/C++ strcpy 처리되지 않은 읽기 위반
그냥 링크 된 목록을 만듭니다. 보호 된 회원 Data* _next
... 그들 체인.
unsigned char *는 데이터 구조의 일부인 Windows 기능 VirtualQueryEx
의 일부입니다.
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 *
makealinkedlisthere() 함수의 소스 코드를 표시하십시오. – Flot2011
충분한 정보를 제공하지 않았습니다. 'Data :: makealinkedlistthere'는 무엇을합니까? –
여기에서 무슨 일이 일어나고 있는지 알아보기 위해 데이터에 대한 자세한 정보를 제공해야합니다. 특히'makealinkedlisthere'와'getNext'. 루프가 매우 의심스러워 보입니다. – quamrana