我有同样的大小和两个无符号的字符数组如果检查语句来看看他们是平等的:Memcmp似乎给我一个不正确的返回值
#define BUFFER_SIZE 10000
unsigned char origChar[BUFFER_SIZE];
unsigned char otherChar[BUFFER_SIZE];
//Yes, I know this is unnecessary
memset(origChar,'\0',BUFFER_SIZE);
memset(otherChar,'\0',BUFFER_SIZE);
. . .
if(memcmp(origChar,otherChar,offset))
{
. . .
}
当我检查两个数组在gdb,我得到如下:
(gdb) p origChar
$1 = '\000' <repeats 9999 times>
(gdb) p otherChar
$2 = '\000' <repeats 9999 times>...
(gdb) p memcmp(otherChar,origChar,offset)
$3 = 1
但是,如果我减1 offset
,我得到如下:
(gdb) p memcmp(otherChar,origChar,offset-1)
$4 = 0
(gdb) p offset
$5 = 10000
这对我来说没有任何意义。 GDB基本上说他们是完全平等的,那么为什么会减少offset
一个改变的东西?
为什么'offset'不同于'BUFFER_SIZE'? – ouah
offset'的'值意味着改变,但是在这种情况下,'BUFFER_SIZE'和'offset'有10000 – Sky
等效值是什么的'offset'价值? 'BUFFER_SIZE'的价值是什么? – PaulMcKenzie