Результаты поиска по запросу "undefined-behavior"
позволяет очень осторожно убедиться, что никто еще не держит такую ссылку. Я не собираюсь говорить «это невозможно», потому что люди продолжают удивлять меня (особенно в этом сообществе;), но я не могу придумать, как сделать эту работу. Мне было бы любопытно, если у вас есть пример, хотя вы думаете, что это разумно.
A ний вопрос [https://stackoverflow.com/q/50425910/155423]искал способность строить самообращающиеся структуры. При обсуждении возможных ответов на вопрос один потенциальный ответ включал ...
представляет собой использование.
е говоря, считается ли следующий код неопределенным поведением? int main() { int *p = <some invalid pointer value>; }Для примера компиляции возьмите следующий код: int main() { int *p = new int; delete p; // Now p has an invalid pointer ...
, Вы должны использовать это:
рал следующую программу: #include <stdio.h> int main(void) { int a = 3; int b = 42; printf("a = %d\nb = %d\n", a, b); printf("Exchanging values.\n"); a ^= b ^= a ^= b; printf("a = %d\nb = %d\n", a, b); return 0; }и это нормально. Когда я пытаюсь ...
Что означает код «* ((char *) - 1) = 'x';»?
У меня была проблема с чтением исходного кода Redis, может кто-нибудь сказать мне, как использовать последний оператор в_redisAssert функция вdebug.c: *((char*)-1) = 'x';
Теперь, если это язык, который определяет, что левая сторона (или правая сторона) всегда должна выполняться первой, то поведение больше не будет неопределенным.
вопрос связан с моим предыдущимпроблема [https://stackoverflow.com/questions/5294660/explain-working-of-this-c-program], Ответ, который я получил, был«Это неопределенное поведение». Пожалуйста, кто-нибудь объяснить: Что такое неопределенное ...
... на две категории диалектов, одна из которых не подходит для целей, связанных с низкоуровневым программированием, а другая поддерживает только ограниченную оптимизацию. Согласно Обоснованию C, Дух C включает в себя принцип «Не мешайте программисту делать то, что необходимо сделать». Оптимизация, основанная на идее, что программист не будет делать X, полезна только в тех случаях, когда программисту не нужно делать X. К сожалению, большинство аргументов об определенных поведениях полностью теряют это из виду.
ожет удивить некоторых кодеров, и, как ни удивительно, это невозможно реализоватьstd::vector без нестандартной поддержки компиляторов. Проблема, по сути, заключается в способности выполнять арифметику указателей на сырой области хранения. ...
В выражении удаления одного объекта, если статический тип удаляемого объекта отличается от его динамического типа, и выбранная функция освобождения (см. Ниже) не является оператором удаления, статический тип должен быть базовым классом динамический тип объекта, который должен быть удален, и статический тип должен иметь виртуальный деструктор, иначе поведение не определено.
месяцев назад я спросилэто [https://stackoverflow.com/questions/52180485/valgrind-shows-memory-leak-in-stdmake-unique] вопрос, где я спросил, почему произошла утечка памяти. Видимо, я забыл виртуальный деструктор. Теперь я пытаюсь понять, почему ...
Существуют ли случаи, когда будет определено понижение действительной базы до производной?
В общем случае, это (очень заслуженное) неопределенное поведение для даункаста из (динамического)Base к одному из производных классовDerived Очевидный UBclass Base { public: virtual void foo() { /* does something */ } int a; } class Derived : ...
@ Тони: Честная точка зрения. Это действительно имеет смысл. Спасибо.
я сделаю: const char* const_str = "Some string"; char* str = const_cast<char*>(const_str); // (1) str[0] = "P"; // (2)Где (какая строка) точно находится неопределенное поведение? Я много искал это на SO, но не нашел ни однозначного и точного ...
Это просто потому, что компилятор не может сказать, какой адрес будет. Вам не разрешается пытаться изменить это, хотя, как вы и обещали, оно должно быть постоянным. Это неопределенное поведение, как говорит Наваз. Все может случиться!
код имеет дело сTYPE* const указатель. struct D { void Check () { D* const p = new D; // 2nd test is "p = 0;" cout<<"p = "<<p<<endl; (D*&)p = new D; cout<<"p = "<<p<<endl; // prints 0, "p = 0;" at declaration } }; int main () { D o; o.Check(); ...