1

标题是不言自明的,我正在比较两个应该相同但失败的内存块。我不知道测试失败的地方。找出这一点将帮助我调试问题。那么有没有办法准确地找到 memcmp 失败的地方?

4

1 回答 1

1

你可以使用这个:

void *mymemcmp(const void *ptr1, const void *ptr2, size_t num) {
    const unsigned char *s1 = (const unsigned char*)ptr1;
    const unsigned char *s2 = (const unsigned char*)ptr2;
    for(size_t index = 0; i<num; i++) {
        if(*s1 != *s2) return s1;
        s1++;
        s2++;
    }
    return NULL;
}    

它返回一个指针,指向第一个参数中第一个差异的位置。然后你可以像这样调查它。

void *ao = mymecmp(a, b, n);
ptrdiff_t d = ao-(void*)a;
void *bo = d+(void*)b;

现在,aobo指出不同之处。

于 2020-12-09T09:38:35.113 回答