Могу ли я передать нулевой указатель на memcmp?

в частности, является ли следующее четко определенным или оно демонстрирует неопределенное поведение?

memcmp(0, 0, 0);

отличается ли это между C и c++? В идеале, пожалуйста, укажите цитату из стандарта(ов).

1 ответов


в частности, является ли следующее четко определенным или оно демонстрирует неопределенное поведение?

это неопределенно. C99 7.21.1 / 2 говорит обо всех строковых функциях:

Если явно не указано в противном случае в описании конкретной функции в данном подпункте, аргументов указатель при таком вызове все равно должны быть допустимые значения

и memcmp в 7.21.4.1 явно не указано иначе.

отличается ли это между C и c++?

нет, C++ ссылается на C для определения функций библиотеки C и не имеет ничего особенного сказать о memcmp.