Вопросы по теме 'undefined-behavior'
Каким образом соединение new [] с delete могло привести только к утечке памяти?
Прежде всего, использование delete для всего, что выделено с помощью new[] , является неопределенным поведением в соответствии со стандартом C ++.
В Visual C ++ 7 такое объединение может привести к одному из двух последствий.
Если тип new []...
8164 просмотров
schedule
23.01.2024
строка с; &с+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 просмотров
schedule
08.12.2022
Это неопределенное поведение в 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 просмотров
schedule
20.11.2023
Утечка памяти вызывает неопределенное поведение?
Это обсуждение возникло в комментариях к другому сообщению .
Образец кода:
#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 просмотров
schedule
21.01.2024
Индексация 2D-массива - неопределенное поведение?
Недавно я столкнулся с некоторыми фрагментами кода, выполняющими некоторые сомнительные операции индексации 2D-массивов. Рассмотрим в качестве примера следующий пример кода:
int a[5][5];
a[0][20] = 3;
a[-2][15] = 4;
a[5][-3] = 5;
Подвержены...
703 просмотров
schedule
21.04.2024
Странные результаты для условного оператора с указателями GCC и bool
В следующем коде я memset() stdbool.h bool переменную со значением 123 . (Возможно, это неопределенное поведение?) Затем я передаю указатель на эту переменную функции-жертве, которая пытается защитить себя от неожиданных значений с помощью...
780 просмотров
schedule
04.02.2024
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 просмотров
schedule
18.02.2024