Вопросы по теме 'undefined-behavior'
Что такое строгое правило псевдонима?
На вопрос о общем неопределенном поведении в C люди иногда ссылаются на строгое правило псевдонима. О чем они говорят?
232458 просмотров
schedule
08.05.2022
Каковы все общие неопределенные поведения, о которых должен знать программист на C ++?
Каковы все общие неопределенные поведения, о которых должен знать программист на C ++?
Скажите, например:
a[i] = i++;
71964 просмотров
schedule
20.05.2022
Как объяснить результат выражения (++ x) + (++ x) + (++ x)?
x = 1;
std::cout << ((++x)+(++x)+(++x));
Я ожидаю, что результат будет 11 , но на самом деле это 12 . Почему?
2514 просмотров
schedule
25.02.2022
Почему бы мне не попробовать использовать это значение после удаления?
В этом параграфе C ++ FAQ обсуждается использование конструкции delete this . Перечислены 4 ограничения.
Ограничения с 1 по 3 выглядят вполне разумными. Но почему там ограничение 4, что я «не должен его проверять, сравнивать с другим...
2045 просмотров
schedule
01.03.2022
С++ удалить. Он удаляет мои объекты, но я все еще могу получить доступ к данным?
Я написал простую работающую игру тетрис, в которой каждый блок является экземпляром класса singleblock.
class SingleBlock
{
public:
SingleBlock(int, int);
~SingleBlock();
int x;
int y;
SingleBlock *next;
};
class...
15644 просмотров
schedule
14.07.2022
Когда вызов функции-члена для нулевого экземпляра приводит к неопределенному поведению?
Рассмотрим следующий код:
#include <iostream>
struct foo
{
// (a):
void bar() { std::cout << "gman was here" << std::endl; }
// (b):
void baz() { x = 5; }
int x;
};
int main()
{
foo* f = 0;...
15541 просмотров
schedule
03.04.2023
Деление на ноль: неопределенное поведение или реализация, определенная в C и/или C++?
Относительно деления на ноль в стандартах сказано:
C99 6.5.5p5 - Результатом оператора / является частное от деления первого операнда на второй; результатом оператора % является остаток. В обеих операциях, если значение второго операнда равно...
24563 просмотров
schedule
08.07.2023
Что такое неопределенное поведение?
Что это за неопределенное поведение , о котором я все время читаю? Почему демоны вылетают из моего носа?
1218 просмотров
schedule
11.07.2022
Почему другое поведение для указателей TYPE* const?
Ниже код имеет дело с указателем 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; //...
137 просмотров
schedule
27.11.2023
Консультации по решению UD в низкоуровневых функциях управления
Я новичок в C и начал писать небольшую библиотеку с функциями для получения длины строк, обращения строк, преобразования двоичных данных в буферах символов в целые числа и шорты. Просто ради образования и лучшего понимания низкоуровневых функций,...
62 просмотров
schedule
25.01.2023
Стандартная ссылка для int foo = foo
int foo = foo; компилируется. Какая часть стандарта С++ разрешает это?
551 просмотров
schedule
24.08.2022
Вызывает ли макрос offsetof из ‹stddef.h› неопределенное поведение?
Пример из реализации MSVC:
#define offsetof(s,m) \
(size_t)&reinterpret_cast<const volatile char&>((((s *)0)->m))
// ^^^^^^^^^^^
Как видно, он разыменовывает нулевой...
2715 просмотров
schedule
22.04.2022
Имя типа = имя; когда-либо был полезен в C++?
В C++ разрешен следующий код:
int a = a;
or
Type name = name;
Оба приводят к тому, что неинициализированный объект инициализируется сам по себе, что часто приводит к неопределенному поведению.
Нужен ли такой код или разумен ли он?...
595 просмотров
schedule
18.03.2023
Может ли Valgrind уловить все виды неопределенного поведения?
Другими словами, могу ли я быть уверен, что моя программа не имеет неопределенного поведения, если она работает без каких-либо сообщений об ошибках Valgrind?
1255 просмотров
schedule
28.11.2022
Почему это нарушение прав доступа может происходить с флагами /Og и /GL при передаче по ссылке?
Когда (и только когда) я компилирую свою программу с флагами /Og и /GL , используя компилятор Windows Server 2003 DDK C++ (это хорошо на WDK 7.1, а также Visual Studio 2010!), я получаю нарушение прав доступа, когда запускаю это:
#include...
376 просмотров
schedule
17.09.2023
Почему char* вызывает неопределенное поведение, а char[] — нет?
Попытка изменить строковый литерал приводит к неопределенному поведению:
char * p = "wikipedia";
p[0] = 'W'; // undefined behaviour
Один из способов предотвратить это — определить его как массив вместо указателя:
char p[] = "wikipedia";...
1326 просмотров
schedule
03.10.2022
Почему этот вызов Objective C зависает?
Мой друг обнаружил какое-то странное поведение с NSDictionary, и мне любопытно, почему это происходит. Рассмотрим следующий код:
NSDictionary *dict = [[NSDictionary alloc] init];
// Oops, we can't mutate an NSDictionary
[dict setObject:[[NSNull...
292 просмотров
schedule
13.10.2022
Разница между стеком и кучей
Скажите, пожалуйста, в чем разница между стеком и кучей в отношении приведенного ниже кода.
int main()
{
int arr[3];
int *a;
arr [5] = 6; // out of bound but it will not give error.
arr [3000] = 8 ; //SIGSEGV
a = malloc...
1107 просмотров
schedule
22.09.2022
Точки последовательности и порядок оценки
Я читал K&R и наткнулся на этот пример о неопределенности в поведении при оценке выражения вроде a[i]=i++ ; Спецификация C99 в $ 6.5.2 говорит, что
Между предыдущей и следующей точкой последовательности сохраненное значение объекта должно...
442 просмотров
schedule
27.07.2023
Является ли неопределенным поведением формирование диапазона указателей из адреса стека?
Некоторые программисты на C или C++ с удивлением обнаруживают, что даже сохранение недопустимого указателя это неопределенное поведение . Однако для массивов кучи или стека можно хранить адрес единицы после конца массива, что позволяет сохранять...
793 просмотров
schedule
31.07.2022