Результаты поиска по запросу "undefined-behavior"

1 ответ

 позволяет очень осторожно убедиться, что никто еще не держит такую ​​ссылку. Я не собираюсь говорить «это невозможно», потому что люди продолжают удивлять меня (особенно в этом сообществе;), но я не могу придумать, как сделать эту работу. Мне было бы любопытно, если у вас есть пример, хотя вы думаете, что это разумно.

A ний вопрос [https://stackoverflow.com/q/50425910/155423]искал способность строить самообращающиеся структуры. При обсуждении возможных ответов на вопрос один потенциальный ответ включал ...

1 ответ

 представляет собой использование.

е говоря, считается ли следующий код неопределенным поведением? int main() { int *p = <some invalid pointer value>; }Для примера компиляции возьмите следующий код: int main() { int *p = new int; delete p; // Now p has an invalid pointer ...

2 ответа

, Вы должны использовать это:

рал следующую программу: #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; }и это нормально. Когда я пытаюсь ...

ТОП публикаций

2 ответа

Что означает код «* ((char *) - 1) = 'x';»?

У меня была проблема с чтением исходного кода Redis, может кто-нибудь сказать мне, как использовать последний оператор в_redisAssert функция вdebug.c: *((char*)-1) = 'x';

8 ответов

Теперь, если это язык, который определяет, что левая сторона (или правая сторона) всегда должна выполняться первой, то поведение больше не будет неопределенным.

вопрос связан с моим предыдущимпроблема [https://stackoverflow.com/questions/5294660/explain-working-of-this-c-program], Ответ, который я получил, был«Это неопределенное поведение». Пожалуйста, кто-нибудь объяснить: Что такое неопределенное ...

1 ответ

... на две категории диалектов, одна из которых не подходит для целей, связанных с низкоуровневым программированием, а другая поддерживает только ограниченную оптимизацию. Согласно Обоснованию C, Дух C включает в себя принцип «Не мешайте программисту делать то, что необходимо сделать». Оптимизация, основанная на идее, что программист не будет делать X, полезна только в тех случаях, когда программисту не нужно делать X. К сожалению, большинство аргументов об определенных поведениях полностью теряют это из виду.

ожет удивить некоторых кодеров, и, как ни удивительно, это невозможно реализоватьstd::vector без нестандартной поддержки компиляторов. Проблема, по сути, заключается в способности выполнять арифметику указателей на сырой области хранения. ...

3 ответа

В выражении удаления одного объекта, если статический тип удаляемого объекта отличается от его динамического типа, и выбранная функция освобождения (см. Ниже) не является оператором удаления, статический тип должен быть базовым классом динамический тип объекта, который должен быть удален, и статический тип должен иметь виртуальный деструктор, иначе поведение не определено.

месяцев назад я спросилэто [https://stackoverflow.com/questions/52180485/valgrind-shows-memory-leak-in-stdmake-unique] вопрос, где я спросил, почему произошла утечка памяти. Видимо, я забыл виртуальный деструктор. Теперь я пытаюсь понять, почему ...

3 ответа

Существуют ли случаи, когда будет определено понижение действительной базы до производной?

В общем случае, это (очень заслуженное) неопределенное поведение для даункаста из (динамического)Base к одному из производных классовDerived Очевидный UBclass Base { public: virtual void foo() { /* does something */ } int a; } class Derived : ...

2 ответа

@ Тони: Честная точка зрения. Это действительно имеет смысл. Спасибо.

я сделаю: const char* const_str = "Some string"; char* str = const_cast<char*>(const_str); // (1) str[0] = "P"; // (2)Где (какая строка) точно находится неопределенное поведение? Я много искал это на SO, но не нашел ни однозначного и точного ...

1 ответ

Это просто потому, что компилятор не может сказать, какой адрес будет. Вам не разрешается пытаться изменить это, хотя, как вы и обещали, оно должно быть постоянным. Это неопределенное поведение, как говорит Наваз. Все может случиться!

код имеет дело с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(); ...