Вопросы с тегом «undefined-behavior»

11
Является ли `string.assign (string.data (), 5)` хорошо определенным или UB?

Коллега хотел написать это: std::string_view strip_whitespace(std::string_view sv); std::string line = "hello "; line = strip_whitespace(line); Я сказал, что возвращение string_viewсделало меня априори непростым , и, кроме того, псевдоним здесь выглядел как UB для меня. Я могу с уверенностью...

10
Что происходит, если неопределенное поведение C ++ соответствует определенному поведению C?

У меня есть *.cppфайл, который я компилирую с C ++ (не компилятор C). Содержащая функция опирается на приведение (см. Последнюю строку), которое, кажется, определено в C (пожалуйста, исправьте, если я ошибаюсь!), Но не в C ++ для этого специального типа. [...] C++ code [...] struct sockaddr_in sa =...

9
Приведение ссылки на функцию с неверным указателем?

Я отслеживаю ошибку в стороннем коде и сузил ее до чего-то вроде. use libc::c_void; pub unsafe fn foo() {} fn main() { let ptr = &foo as *const _ as *const c_void; println!("{:x}", ptr as usize); } При запуске на стабильной версии 1.38.0 выводится указатель на функцию, но бета (1.39.0-бета.6) и...

9
«Недопустимая инструкция по аппаратному обеспечению» из очень простого кода

Разрабатывая сомнительную претензию , я написал эту небольшую тестовую программуnoway.c int proveit() { unsigned int n = 0; while (1) n++; return 0; } int main() { proveit(); return 0; } Тестируя это, я получаю: $ clang -O noway.c $ ./a.out zsh: illegal hardware instruction ./a.out Wat. Если я...

9
GCC не может сообщить о неправильно сформированном лямбда-вызове constexpr

Ниже приведены два тестовых примера для неопределенного поведения, выраженного как IIFE (немедленное название лямбда-экспрессии): constexpr auto test3 = []{ int* p{}; { int x{}; p = &x; } return *p; // Undefined Behaviour }(); // IIFE constexpr auto test4 = []{ int x =...