170 похожих чатов

Fl_Double_Window* make_window() { Fl_Double_Window* w; { Fl_Double_Window* o

= new Fl_Double_Window(480, 320);
w = o; (void)w;
{ Fl_Button* o = new Fl_Button(25, 25, 424, 22, "Fl_Button");
o->callback((Fl_Callback*)click);
} // Fl_Button* o
o->end();
} // Fl_Double_Window* o
return w;
}

Здесь переменная , объявляется и появляется код в фигурных скобках. Как это вообще? Где об этом прочитать? Как такое называется?

21 ответов

32 просмотра

https://en.cppreference.com/w/cpp/language/scope

Андрей- Автор вопроса
Sergey D
https://en.cppreference.com/w/cpp/language/scope

Разобрался. Но зачем вообще создавать отдельную переменную o ? Это какой-то паттерн? Есть где об этом почитать?

Это автоматическая переменная, существует только внутри блока кода. Переменная с одним и тем же названием и типом данных, но в разных блоках кода никак не связаны между собой.

Андрей- Автор вопроса
Дмитрий 🎮
Это автоматическая переменная, существует только в...

Я понял, но зачем? Почему не использовать w на прямую?

Андрей
Разобрался. Но зачем вообще создавать отдельную пе...

Это хорошая практика объявлять переменную как можно ближе к месту использования и по максимуму ограничивать её область видимости. Насчёт w и o не знаю, не особо понимаю из-за форматирования что там и зачем.

Андрей- Автор вопроса
Алексей (lewa_j) Иванчуков
это странный код не надо так

Это автоматическая генерация для пользовательского интерфейса FLTK

Андрей- Автор вопроса
Дмитрий 🎮
Это хорошая практика объявлять переменную как можн...

Так я так понимаю, мнение на счёт такое реализации разнятся?

Андрей- Автор вопроса
Андрей
О том, имеет ли это смысл

Мнения и ситуации могут быть разными, а объективные плюсы и минусы всегда одни. По крайней мере не засорять область видимости лишними переменными и ограничивать временные переменные местом их использования это однозначный плюс так делать.

Андрей- Автор вопроса
Дмитрий 🎮
Мнения и ситуации могут быть разными, а объективны...

Да, согласен. Но за очисткой всё равно придётся следить. Ведь как только он покинет область видимости, это по идее, утечк памяти

Андрей
Да, согласен. Но за очисткой всё равно придётся сл...

Не правда, только для динамической памяти. Переменные на "стеке" — автоматические по этому так и называются, что тебе не надо вручную выделять и освобождать память под них. Эту работу берёт на себя компилятор.

Андрей- Автор вопроса
Дмитрий 🎮
Мнения и ситуации могут быть разными, а объективны...

В данный момент кнопка Fl_Button всё ещё остаётся в куче, потому я так понимаю она и остаётся на окне w даже после покидания области память, но ведь очистить теперь её никак нельзя, разве нет?

Андрей
В данный момент кнопка Fl_Button всё ещё остаётся ...

Не знаю, надо читать документацию к библиотеке.

Андрей- Автор вопроса
Дмитрий 🎮
Не правда, только для динамической памяти. Переме...

В данном случаи, это именно динамическое выделение памяти

Андрей
В данном случаи, это именно динамическое выделение...

Да, но вдруг там есть передача владения или что-то такое. Или разработчики библиотеки решили в конструкторе все динамические объекты добавлять в вектор, чтобы в конце работы за тебя освободить динамическую память?

Андрей
Ладно, спасибо за помочь

Утром, может быть, люди поопытнее ещё что-нибудь скажут или меня поправят.

Андрей
В данный момент кнопка Fl_Button всё ещё остаётся ...

По данному коду нельзя, но возможно сама Эта библиотека имеет какие-то возможности отслеживания этой динамической памяти и корректного удаления этих объектов

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта