2016-10-03 71 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"); 
} 

爲什麼test和test2總是不一樣?

感謝您的幫助。

+0

你對'test == test2'會做什麼的期望是什麼? – nos

+2

內存地址將永遠是不同的,這就是你正在測試 – Alex

+1

喜歡標準容器(例如['std :: vector'](http://en.cppreference.com/w/cpp/container/vector))到陣列。然後像這樣的比較將起作用。 –

回答

3

您在比較地址testtest2。改爲使用memcmp

您的代碼就相當於

if (&test[0] == &test2[0]){ 

改變它

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

應按照您的預期。

0

因爲您正在測試數組地址的相等性。請嘗試使用memcmp

0

當數組的名稱本身被使用時,它變成了一個指針,所以你要比較兩個數組的地址,而不是它們的內容。