私はプロジェクトに取り組んでおり、コード内のバグを見つけるために最後の 1 時間を費やしました。よく調べてみると、ずっと問題だった奇妙なことに気づきました。
私の配列の最初の要素のアドレスは奇妙に と等しいmemcmp()
です。コードを分離してテスト コードを試したところ、同様の結果が得られました。誰かがこの奇妙な振る舞いを説明できますか?
#include <stdio.h>
#include <string.h>
int main(void)
{
char buf[256];
char *p1 = buf;
char *p2 = buf + 3;
if (memcmp(p1, p2, sizeof(char *)) == 0) {
puts("equal...");
}
p1 = buf + 100;
p2 = p1 + 3;
if (memcmp(p1, p2, sizeof(char *)) == 0) {
puts("equal...");
}
return 0;
}