2016-10-03 2 views
0

memcpy를 사용하여 메모리를 읽으려고합니다.C++ memcpy 메모리 읽기

BYTE test[] = {0x01}; 
BYTE test2[] = {0x00}; 
memcpy (test, test2, sizeof(test)); 
if (test == test2){ 
    MessageBox::Show("Same"); 
}else{ 
    MessageBox::Show("Different"); 
} 

왜 테스트와 테스트가 항상 다른가요?

도움 주셔서 감사합니다.

+0

'test == test2'가 무엇을 기대합니까? – nos

+2

메모리 주소는 항상 다르며 테스트 대상입니다. – Alex

+1

표준 컨테이너를 선호합니다 (예 : ['std :: vector'] (http://en.cppreference.com/w/cpp/container/vector)) to 배열. 그런 다음이 같은 비교가 작동합니다. –

답변

3

testtest2의 주소를 비교하고 있습니다. 대신 memcmp을 사용하십시오.

코드는 예상대로 작동합니다

if (memcmp(test, test2, sizeof(test)) == 0) 

을 변경
if (&test[0] == &test2[0]){ 

에 해당합니다.

0

배열의 주소가 같기 때문에 테스트합니다. 대신 memcmp을 사용해보세요.

0

배열의 이름이 자체적으로 사용되면 포인터로 바뀌어 그 내용이 아닌 두 배열의 주소를 비교하게됩니다.