Вопросы по теме 'undefined-behavior'
Почему в C ++ 11 не удаляется объект, имеющий деструктор с поведением undefined побочным эффектом?
В этом ответе цитируется C ++ 11 Standard 3.8:
если нет явного вызова деструктора или если выражение удаления (5.3.5) не используется для освобождения памяти, деструктор не должен вызываться неявно, и любая программа, которая зависит от...
356 просмотров
schedule
08.11.2022
Неопределенное поведение, вызывающее путешествие во времени
Пример этой статьи из msdn блог заставил меня тикать:
Там написано, что эта функция:
void unwitting(bool door_is_open)
{
if (door_is_open) {
walk_on_in();
} else {
ring_bell();
// wait for the door to open...
915 просмотров
schedule
04.05.2024
Как работает выражение равенства в заполнителе printf?
У меня есть следующий фрагмент кода:
main( )
{
int k = 35 ;
printf ( "\n%d %d %d", k == 35, k = 50, k > 40 ) ;
}
который производит следующий вывод
0 50 0
Я не уверен, что понимаю, как первое значение printf становится 0 ....
459 просмотров
schedule
31.10.2022
Почему «управление достигает конца непустой функции» только предупреждение? Это законно?
Допустимо ли в C++ определение функции с возвращаемым типом, отличным от void, который позволяет управлению достигать конца функции, а не оператору return ?
gcc и clang выдают только предупреждения об этом. Является ли код, который делает это...
2220 просмотров
schedule
13.08.2022
Может ли непроверенный вызов scanf вызвать неопределенное поведение?
Вызывает ли приведенный ниже фрагмент неопределенное поведение в случае ошибки?
#include <stdio.h>
int main() {
int i; /* Indeterminate */
if (scanf("%d", &i) == 1) /* Initialize */
printf("%d\n",...
467 просмотров
schedule
17.01.2024
Законно ли иметь указатель на зарезервированный элемент вектора?
Мне любопытно, законны ли такие вещи:
std::vector<some_class_type> vec;
vec.reserve(10);
some_class_type* ptr = vec.data() + 3; // that object doesn't exist yet
Обратите внимание, что я не пытаюсь получить доступ к указанному значению....
702 просмотров
schedule
03.08.2022
Является ли вызов std::min в пустом списке инициализаторов (и явное указание типа) неопределенным поведением?
Вызов std::min() с пустым списком инициализаторов обычно не компилируется (все вопросы можно сформулировать так же и для std::max() ). Этот код:
#include <iostream>
#include <algorithm>
int main() {
std::cout <<...
1128 просмотров
schedule
25.04.2024
Ошибка компиляции С++?
У меня есть следующий код:
#include <iostream>
#include <complex>
using namespace std;
int main() {
complex<int> delta;
complex<int> mc[4] = {0};
for(int di = 0; di < 4; di++, delta = mc[di]) {
cout...
5744 просмотров
schedule
10.10.2023
Точки последовательности между аргументами функции printf; имеет ли значение точка последовательности между конверсиями?
Я прочитал здесь , что есть точка следования:
После действия, связанного со спецификатором формата преобразования ввода/вывода. Например, в выражении printf("foo %n %d", &a, 42) есть точка последовательности после того, как %n...
811 просмотров
schedule
01.09.2022
Всегда ли перемещение объектов C++, отличных от POD, с помощью memcpy вызывает неопределенное поведение?
Конкретно меня интересует случай, когда:
Известно, что не существует внешних указателей на объект (и ни на один из его членов).
Объект не содержит внутренних ссылок на себя.
Деструктор исходного объекта гарантированно не вызывается....
361 просмотров
schedule
18.02.2024
(Где) Документирует ли clang поведение, определяемое реализацией?
Определяемое реализацией поведение в языке C — это неспецифицированное поведение, для которого каждая соответствующая реализация должна документировать свой выбор.
Я легко нашел такую документацию для gcc здесь или Microsoft C здесь , но я не...
579 просмотров
schedule
03.06.2024
Почему использование ptr::read() в удаленном ящике не является неопределенным поведением?
Я тестировал некоторые небезопасные функции Rust, в основном функции std::ptr , чтобы посмотреть, как я могу вызвать неопределенное поведение (просто из любопытства). В приведенном ниже примере я использую std::ptr::read() для перемещения адреса,...
118 просмотров
schedule
12.07.2022
Что я могу предположить о поведении atoi () при ошибке?
Стандартная функция библиотеки C atoi задокументирована в ISO 9899: 2011 как:
7.22.1 Функции числового преобразования
1 Функции atof , atoi , atol и atoll не должны влиять на значение целочисленного выражения errno при ошибке. Если...
1966 просмотров
schedule
10.08.2022
Что будет делать printf, если будет передано недостаточно аргументов?
Допустим, я использовал printf без передачи достаточного количества аргументов для соответствия спецификаторам формата:
#include <stdio.h>
int main(void) {
printf("missing argument: %s\n");
}
Существуют ли какие-либо гарантии...
1038 просмотров
schedule
05.08.2022
Как бороться с предупреждением clang (3.9) -Wexpansion-to-defined?
clang 3.9 добавил к -Wall a предупреждение -Wexpansion-to-defined , которое производит
расширение макроса, производящее «определенное», имеет неопределенное поведение
в случае, если defined используется вне выражения #if , включая...
9386 просмотров
schedule
27.02.2024
Является ли смещение вправо неопределенным поведением для отрицательного числа в cpp и в java?
Чтобы оптимизировать мой код cpp, в некоторых случаях я пытаюсь использовать смещение вправо. Вот пример:
int main()
{
int i = (1 - 2) >> 31; // sizeof(int) == 4
...
...
}
Я напечатал i и получил -1 . Это означает,...
841 просмотров
schedule
21.10.2022
Является ли поведение undefined для чтения и сравнения байтов заполнения типа POD?
Сегодня я столкнулся с кодом, который примерно похож на следующий фрагмент. Оба valgrind и UndefinedBehaviorSanitizer обнаружили чтение неинициализированных данных.
template <typename T>
void foo(const T& x)
{...
720 просмотров
schedule
04.03.2024
Можете ли вы нарушить строгое правило псевдонимов с помощью std::aligned_union
Разрешают ли правила для союзов, например [class.mem] p20, также std::aligned_union_t ? Например, если я храню две пары ( pair<const A, B> и pair<A, B> ) в std::aligned_union_t , при этом неконстантная пара активна все время....
225 просмотров
schedule
22.09.2022
undefined LLVM IR в зависимости от размера массива
Я вижу неопределенное поведение в зависимости от размера локального массива. Для приведенного ниже кода:
int wbExecute_simple(char nInput, char add_pattern)
{
char test_array[4] = { 0xa, 0xb, 0xc, 0xd };
int i = 0;...
185 просмотров
schedule
28.12.2023
Как быть предупрежденным об указателях на локальные переменные вне области видимости
Рассмотрим следующий код:
#include <stdio.h>
void badidea(int**);
int main(void) {
int* p;
badidea(&p);
printf("%d\n", *p); /* undefined behavior happens here: p points to x from badidea, which is now out of...
240 просмотров
schedule
29.02.2024