Lambda表达式和内存管理

Sur*_*rya 10 c++ lambda programming-languages functional-programming c++11

C++ 0x中的Lambda表达式/闭包如何使C++中的内存管理变得复杂?为什么有些人说封闭在手动内存管理的语言中没有位置?他们的要求是否有效,如果是,那背后的原因是什么?

Mar*_*tos 15

这些争论是一个红色的鲱鱼.是的,lambdas有内存管理问题需要处理,但lambda基本上就像一个带有成员变量的函数对象(functor).无论仿函数必须处理什么问题,lambda也必须处理.C++ 0x lambdas具有决定捕获哪些对象以及是应该通过值还是通过引用来设置的工具.这类似于在仿函数对象中存储值和引用.


fre*_*low 10

Lambda表达式可以活得比他们创建的内容.通过引用结合自由变量可以是一个问题,那么,因为当拉姆达希望以后访问他们,他们可能不存在了.这只是伪装"不要通过引用返回局部变量".