The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Утверждён стандарт C++20"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Подсказка: Для контроля за появлением новых сообщений - перед выходом жмите "Пометить прочитанным".
. "Утверждён стандарт C++20" +2 +/
Сообщение от Ordu (ok), 08-Сен-20, 21:45 
> В лиспе тоже просто: (lambda (arg) body).
> Ну и нахрена такие сложности в плюсах?

Захват переменных замыканием. В лиспе если у тебя есть объект, то лиспу пофигу, сколько разного кода на него ссылается. И сборщику мусора пофигу. В C/C++ же не пофигу, легко можно придти к ситуации неопределённости, когда нет возможности вне времени выполнения сказать, когда надо освобождать память. (Во-время выполнения тоже нельзя, но это лишь в дефолтном инструментарии: valgrind, например может, или сборщик мусора можно прикрутить, и он тоже найдёт память, которую следовало бы освободить).

А чтобы дать программисту возможность неопределённости избегать, запилен заморочный синтаксис лямбд, который позволяет программисту рулить тем, как переменные попадают в лямбду: копируются значения? закидываются ссылки? Заметь, что если закидываются ссылки, то программист сам должен следить за тем, чтобы не удалить объекты, на которые они ссылаются, до того, как будет удалена лямбда, иначе код лямбды обратится к освобождённой памяти. Если же копируются значения, то куда они копируются? На стек не скопируешь, потому как лямбду можно вернуть из функции и стековый фрейм может прекратить существовать. Значит копируем в кучу, а значит выделение памяти, значит с лямбдой увязан кусок памяти, который надо освободить, освобождая лямбду.

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Утверждён стандарт C++20, opennews, 07-Сен-20, 09:43  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру