相关疑难解决方法(0)

std :: memcmp可以读取超过第一个差异的任何字节吗?

考虑:

constexpr char s1[] = "a";
constexpr char s2[] = "abc";
std::memcmp(s1, s2, 3);
Run Code Online (Sandbox Code Playgroud)

如果memcmp在它看到的第一个差异处停止,它将不会读取超过s1的第二个字节(nul终止符),但是我没有在C标准中看到任何确认此行为的内容,并且我不知道任何内容扩展它的C++.

n1570 7.24.4.1 PDF链接

int memcmp(const void *s1, const void *s2, size_t n);

memcmp函数将n指向的对象的第一个字符与指向的对象s1的前n个字符进行比较s2

我的理解是正确的,标准将行为描述为读取n两个参数的所有字节,但是库可以短路 - 如果它们一样?

c++

7
推荐指数
1
解决办法
315
查看次数

标签 统计

c++ ×1