powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ссылка на переменные, потерявшие видимость
12 сообщений из 37, страница 2 из 2
Ссылка на переменные, потерявшие видимость
    #39284888
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlЕсли кратко, то все что не влияет на переменные во внешней области видимости - может быть выкинуто оптимизатором нафиг как ненужное.
Да. Это так. Но какой код генерится? Это же должно быть очевидно?
White OwlА вот то, что оно у тебя "в любом случае" работает это удача
Ну, это понятно. Я и не рассчитываю что код с UB будет работать по-настоящему ))
White OwlПроще. Но ты не там ищешь доказательства простоты.
Согласен. Пока неубедительно звучит ))
...
Рейтинг: 0 / 0
Ссылка на переменные, потерявшие видимость
    #39284889
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyWhite OwlЕсли кратко, то все что не влияет на переменные во внешней области видимости - может быть выкинуто оптимизатором нафиг как ненужное.
Да. Это так. Но какой код генерится? Это же должно быть очевидно?Мне это не очевидно. Видать опыт создания компиляторов мешает. :)
...
Рейтинг: 0 / 0
Ссылка на переменные, потерявшие видимость
    #39284930
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется это side-effect типа поломаных часов которые внезапно
дважды в сутки дали точное время. И при том сборка прошла без
Warnings (ну по крайней мере на MinGW).

Возможно код не легален но вправе-ли мы к портабельному ассебмлеру
выставлять какие-то изысканные требования. Что хотели то и получили.
...
Рейтинг: 0 / 0
Ссылка на переменные, потерявшие видимость
    #39284943
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Причина кажущейся работоспособности приведённого кода -- в отсутствии других автоматических переменных во внешнем блоке функции. Если завести такие переменные большого размера, да ещё лучше и инициализировать их, то жизнь сразу же станет не такой радужной...

nojava, если ты полагаешь, что компилятор тебе должен что-то сообщать о подобном коде в виде варнингов, ты ошибаешься.
...
Рейтинг: 0 / 0
Ссылка на переменные, потерявшие видимость
    #39284979
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivПричина кажущейся работоспособности приведённого кода -- в отсутствии других автоматических переменных во внешнем блоке функции. Если завести такие переменные большого размера, да ещё лучше и инициализировать их, то жизнь сразу же станет не такой радужной...Не факт.
Компилятор вполне может (и чаще всего делает) объявить все переменные на стеке в начале блока видимости, а там где она объявлена в коде будет только инициализация. В этом случае никакие добавления переменных не поломают работу.
...
Рейтинг: 0 / 0
Ссылка на переменные, потерявшие видимость
    #39284995
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АМ, здесь проблему дохлого указателя увидеть гораздо проще, чем инвалидирующийся итератор в жопе STL.

Сов совершенно правильно сказал - если ты представляешь, как работает компилятор, у тебя нет таких глупых вопросов.
...
Рейтинг: 0 / 0
Ссылка на переменные, потерявшие видимость
    #39284998
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglАМ, здесь проблему дохлого указателя увидеть гораздо проще, чем инвалидирующийся итератор в жопе STL.
В hello world вообще все проще в принципе )))
...
Рейтинг: 0 / 0
Ссылка на переменные, потерявшие видимость
    #39285001
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шиза косила наши ряды
...
Рейтинг: 0 / 0
Ссылка на переменные, потерявшие видимость
    #39285012
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что говорят статические анализаторы?

CPPCHeck (WebInterface)

Код: plaintext
1.
[test.cpp:14]: (error) Dead pointer usage. Pointer 'p2' is dead if it has been assigned '&c' at line 10.
...
Рейтинг: 0 / 0
Ссылка на переменные, потерявшие видимость
    #39285017
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonА что говорят статические анализаторы?
Да это все до одного места.
В большинстве случаев проблема использования указателей на переменные вне области видимости статически не обнаруживается.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
void f()
{
    char *p = 0;
    {
      char a[] = "1234";
      p = strchr(a, '3');
    }
    if (p) printf("%s\n", p);
}
...
Рейтинг: 0 / 0
Ссылка на переменные, потерявшие видимость
    #39285020
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nojavaСобственно вопрос. Насколько легален код ниже?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
#include <stdio.h>

int main()
{
    int *p1, *p2;
    {
        int a[1025] = {1};
        p1 = a;
        int c = 14;
        p2 = &c;
    }
    int b = 12;

    printf("%d %d %d", *p1, *p2, b);

    return 0;
}







короче, если бы тут было бы

printf("%p %p %d", p1, p2, b);

код был бы валидным.
...
Рейтинг: 0 / 0
Ссылка на переменные, потерявшие видимость
    #39285187
nojava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivПричина кажущейся работоспособности приведённого кода -- в отсутствии других автоматических переменных во внешнем блоке функции. Если завести такие переменные большого размера, да ещё лучше и инициализировать их, то жизнь сразу же станет не такой радужной...

nojava, если ты полагаешь, что компилятор тебе должен что-то сообщать о подобном коде в виде варнингов, ты ошибаешься.

я ничего не полагаю, я вижу что gcc 5.1 вполне себе сообщает о подобном коде, так что ошибаться ты можешь и дальше
...
Рейтинг: 0 / 0
12 сообщений из 37, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ссылка на переменные, потерявшие видимость
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]