Вопросы по теме 'undefined-behavior'

Каким образом соединение new [] с delete могло привести только к утечке памяти?
Прежде всего, использование delete для всего, что выделено с помощью new[] , является неопределенным поведением в соответствии со стандартом C ++. В Visual C ++ 7 такое объединение может привести к одному из двух последствий. Если тип new []...
8164 просмотров

строка с; &с+1; Юридический? УБ?
Рассмотрим следующий код: #include <cstdlib> #include <iostream> #include <string> #include <vector> #include <algorithm> using namespace std; int main() { string myAry[] = { "Mary", "had",...
351 просмотров
schedule 21.10.2022

Разрешено ли компилятору C ++ генерировать случайный код при обнаружении конструкции, которая классифицируется как неопределенное поведение?
Возможный дубликат: Неопределенный, неуказанный и определенный реализацией поведение Я пытаюсь углубить свое понимание неопределенного поведения в C ++. Предположим, что компилятор C ++ намеренно обнаруживает некоторые случаи...
391 просмотров
schedule 01.12.2022

Идиома виртуального конструктора — добродетельное или полное заблуждение
Одно из золотых правил C++ заключается в том, что время жизни экземпляра начинается, когда его конструктор успешно завершается, и заканчивается, когда начинается его деструктор. Из этого правила мы делаем вывод, что НЕ рекомендуется вызывать...
782 просмотров

Это неопределенное поведение в C/C++
int foo(int c){ return c; } int main(void){ int a=5,c; c = foo(--a) + a; } Будет ли это вызывать неопределенное поведение в C/C++? думаю нет не будет. Прочитав все ответы, я не могу понять, является ли это неопределенным...
336 просмотров
schedule 19.10.2022

В каком точном операторе эта программа демонстрирует поведение Undefined в соответствии со стандартом C++?
(Мне известно, что следует избегать возврата адреса/ссылки на переменную, локальную для функции, и программа никогда не должна этого делать.) Приводит ли возврат ссылки к локальной переменной/ссылке к неопределенному поведению? Или...
239 просмотров
schedule 19.09.2022

Почему a = a оценивается как ноль?
Возможный дубликат: Почему a = a равно нулю в Руби? В юмористическом молниеносном выступлении - Wat , сделанном Гэри Бернхардтом, следующий код дает нулевое значение: a = a #=> nil Но все, кроме самоназначения, приводит к...
179 просмотров
schedule 20.12.2023

Неопределенное поведение в цикле for - разве разделение выражений не должно сделать это четко определенным?
Я знаю, что эта тема была немного избита до смерти на SO, но я все еще немного смущен ситуацией, показанной ниже, и несколько человек, похоже, согласились, что это было правильно. Я понимаю, что вы не можете изменить/использовать измененную...
425 просмотров
schedule 11.04.2024

Что может пойти не так, если cout.rdbuf() используется для переключения буфера и никогда не устанавливает его обратно?
Автор представил этот код под заголовком A bus error on my platform #include <fstream> #include <iostream> int main() { std::ofstream log("oops.log"); std::cout.rdbuf(log.rdbuf()); std::cout << "Oops!\n";...
1717 просмотров
schedule 17.01.2024

Является ли (пустой) бесконечный цикл неопределенным поведением в C?
Является ли бесконечный цикл for (;;); неопределенным поведением в C? (Это для C++ , но я не знаю о C.)
2267 просмотров
schedule 20.10.2022

Использование this.var во время инициализации var
Изучая другой вопрос , я с удивлением обнаружил, что следующий Java код компилируется без ошибок: public class Clazz { int var = this.var + 1; } В моем JDK6 var инициализируется 1 . Имеет ли приведенный выше код четко определенную...
186 просмотров
schedule 25.10.2023

Lua — две локальные переменные с одинаковым именем
Я изучаю Lua и мне интересно, можно ли ссылаться на две локальные переменные с одним и тем же именем. Например, допустим ли синтаксис в следующем фрагменте кода (без неопределенного поведения )? Я спрашиваю, потому что он работает, но я не...
1742 просмотров
schedule 18.11.2022

Существуют ли случаи, когда можно определить понижение фактической базы до производной?
В общем случае это (очень заслуженное) Undefined Behavior для преобразования вниз от (динамического) Base к одному из производных классов Derived Очевидный UB class Base { public: virtual void foo() { /* does something */ } int...
447 просмотров
schedule 25.11.2023

Допускается ли компилятору свобода действий в том, что он считает неопределенным поведением в константном выражении?
Мы знаем, что операции, которые могут вызвать неопределенное поведение, не являются основными. константные выражения ( раздел 5.19, параграф 2 из проект стандарта C++ ) В тестах, которые я провел, и clang , и gcc рассматривают неопределенное...
695 просмотров

Утечка памяти вызывает неопределенное поведение?
Это обсуждение возникло в комментариях к другому сообщению . Образец кода: #include <string> void func() { std::string* foo; foo = new std::string[125]; throw 1; delete [] foo; } int main() { try { func(); }...
1196 просмотров
schedule 06.11.2023

Взаимозависимая инициализация с запятыми?
Правильно ли определено следующее: int x = 42, y = x; то есть строго эквивалентно: int x = 42; int y = x; РЕДАКТИРОВАТЬ: вопрос не в стиле (я знаю, что это неправильно...), вопрос "теоретический"
831 просмотров

Индексация 2D-массива - неопределенное поведение?
Недавно я столкнулся с некоторыми фрагментами кода, выполняющими некоторые сомнительные операции индексации 2D-массивов. Рассмотрим в качестве примера следующий пример кода: int a[5][5]; a[0][20] = 3; a[-2][15] = 4; a[5][-3] = 5; Подвержены...
703 просмотров

Странные результаты для условного оператора с указателями GCC и bool
В следующем коде я memset() stdbool.h bool переменную со значением 123 . (Возможно, это неопределенное поведение?) Затем я передаю указатель на эту переменную функции-жертве, которая пытается защитить себя от неожиданных значений с помощью...
780 просмотров

printf() без аргументов в C компилируется нормально. как?
Я попробовал приведенную ниже программу c и ожидал получить ошибку времени компиляции, но почему компилятор не выдает никаких ошибок? #include <stdio.h> int main(void) { printf("%d\n"); return 0; } Почему вывод зависит от...
2525 просмотров
schedule 16.04.2024

Допустимо ли приведение указателя int к указателю с плавающей запятой, если они имеют одинаковое выравнивание?
Предположим, что оба int и float выровнены по 4 байта. Согласно ISO C99 6.3.2.3 п.7: Указатель на объект или неполный тип может быть преобразован в указатель на другой объект или неполный тип. Если результирующий указатель неправильно...
115 просмотров