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

なぜテストとテスト2が常に異なるのですか?

ありがとうございました。

+0

'test == test2'は何を期待していますか? – nos

+2

メモリアドレスは常に異なっており、それはあなたがテストしているものです – Alex

+1

標準的なコンテナを推奨します(例:['std :: vector'](http://en.cppreference.com/w/cpp/container/vector))からアレイ。このような比較はうまくいくでしょう。 –

答えて

3

testtest2のアドレスを比較しています。代わりにmemcmpを使用してください。

あなたのコードは

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

にそれを変更する

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

に相当しますが、期待通りに動作するはずです。

0

アレイのアドレスの等価性をテストしているためです。代わりにmemcmpを使用してみてください。

0

配列の名前がそれ自身で使用されるとき、それはポインタになります。そのため、配列の内容ではなく2つの配列のアドレスを比較しています。

関連する問題