У меня сложилось впечатление, что доступ к члену союза, отличному от последнего набора, является UB, но я не могу найти надежную ссылку (, кроме ответов, утверждающих, что это UB, но без какой-либо поддержки...
Новый стандарт имеет неопределенное поведение, отличное от старого. Новые правила последовательности, например, означают, что некоторые арифметические операции, которые раньше были неопределенными (по таким причинам, как множественные ...
В GCC 6 появилась новая функция оптимизатора: она предполагает, что она всегда не равна нулю, и оптимизирует ее на основе этого. Распространение диапазона значений теперь предполагает, что указатель this функций-членов C ++ не равен нулю ....
Я только что наткнулся на поведение, которое меня удивило: При записи: int x = x+1; в C/C++-программе (или даже в более сложном выражении, включающем только что созданную переменную x) мой gcc/g++ компилируется...
Я наткнулся на этот фрагмент кода 1 int return_printChar1 ()
{// код // упс! нет заявления о возврате
}
интервал return_printChar2 ()
{// код return printf ("Возврат");
}
int main ()
{int ...
Огромное количество операций в C ++ приводит к неопределенному поведению, где спецификация полностью отключается о том, что должно быть поведение программы и позволяет что-то случиться. Из-за этого ...
Я нашел следующий фрагмент в стандарте C ++ 03 в разделе 5.3.5 [expr.delete] p3: В первом варианте (удалить объект) , если статический тип удаляемого объекта отличается от его ...
Гарантируется ли при добавлении именованного элемента в список, что элемент будет добавлен в конец списка? На практике кажется, что это так, но не уверены, что это опасное предположение? test = ...
Это хорошо определенное поведение или оно не определено / как-то еще определено, с каким foo (типом данных или идентификатором) будет работать sizeof? typedef int foo; int main (int argc, char * argv []) {...
В C операция побитового сдвига влево вызывает неопределенное поведение, когда левый операнд имеет отрицательное значение. Соответствующая цитата из ISO C99 (6.5.7 / 4) Результатом E1 << E2 является сдвиг E1 влево ...
Я знаю, что сдвиг вправо отрицательного типа со знаком зависит от реализации, но что, если я выполню сдвиг влево? Например: int i = -1;
я << 1; Это четко определено? Я думаю, что стандарт ...
Следующий пример взят из Википедии. интервал [4] = {0, 1, 2, 3}; int *p = обр + 5; // неопределенное поведение Если я никогда не разыменовываю p, то почему одно только arr + 5 ведет себя как неопределенное? Я ожидаю...
Является ли (++ i) ++ неопределенным поведением? Возможно ли, что побочный эффект приращения префикса происходит после получения увеличенного объекта для работы с приращением постфикса? Это могло показаться странным ...
Я изучаю неопределенное поведение в C и пришел к утверждению, в котором говорится, что не существует определенного порядка вычисления аргументов функции, но как насчет стандартного вызова ...
int x = 1;
int y = 2;
х ^ = у ^ = х ^ = у; Я ожидаю, что значения поменяются местами, но это дает x = 0 и y = 1.
когда я пробовал на языке C, он дает правильный результат.
Согласно этой статье :Если вы попытаетесь заблокировать не-рекурсивный мьютекс дважды из одного и того же потока без разблокировки между ними, вы получите неопределенное поведение. Мой очень наивный ум подсказывает мне, почему бы им просто...
int * p; {int x = 0; p = & amp; x; } // p больше не действителен {int x = 0; if (& x == p) {* p = 2; // Это верно? }} Доступ к указателю после того, на что он указывает ...
Этот вопрос отличается от "Когда/почему я должен использовать виртуальный деструктор?". struct B { virtual void foo (); ~B() {} // <--- не виртуальный
};
struct D : B { virtual void foo (); ~D() {}
};...
I просто интересно, насколько катастрофично целочисленное переполнение. Возьмем следующий пример программы: #include int main ()
{int a = 46341; int b = a * a; std :: cout << ...
Итак, чтобы лучше понять новое / удалить (действительно, чтобы доказать себе на небольших примерах, почему виртуальные деструкторы необходимы для интерфейсов), я хочу понять утечки памяти, чтобы я мог жить в страхе перед ...
Следующий код переходит в бесконечный цикл на GCC: #include
using namespace std; int main () {int я = 0x10000000; int c = 0; делать {c ++; я + = я; ...
int & fun ()
{int * temp = NULL; return * temp;
} В вышеупомянутом методе я пытаюсь выполнить разыменование NULL-указателя. Когда я вызываю эту функцию, она не вызывает исключения. Я обнаружил ...
Обычно UB считается чем-то, чего следует избегать, и в самом текущем стандарте C перечислено довольно много несколько примеров в приложении J. Однако есть случаи, когда я не вижу вреда в ...
Это похоже на неопределенное поведение union A {int const x; float y;
}; А а = {0};
ау = 1; В спецификации сказано: «Создание нового объекта в месте хранения, который представляет собой константный объект со статическими, ...
В C ++ разрешен следующий код: int a = a; или введите имя = имя; Оба приводят к инициализации неинициализированного объекта сам по себе, что часто приводит к неопределенному поведению. Разве такой код когда-либо ...
Я хочу создать указатель функции на функцию, которая будет обрабатывать подмножество случаев для функции, которая принимает список переменных параметров. Вариант использования — преобразование функции, которая переводит... в...
Обновление :См. полный ответ ниже. Короткий ответ — нет, не напрямую. Вы можете создать косвенную ссылку, используя оболочку std ::reference _или достичь того же эффекта в более общем виде с помощью указателей (...
Мы все слышали предупреждения о том, что если вы вызовете неопределенное поведение в C или C++, может произойти что угодно. Ограничено ли это вообще каким-либо поведением во время выполнения или это также включает любую компиляцию -...