【发布时间】:2017-01-06 09:07:58
【问题描述】:
我最近看到一些生产 C++ 代码将 lambda 分配给函数指针并允许 lambda 超出范围。我想知道这是否会导致指向 lambda 的悬空指针。我的代码复制如下。我想知道代码是否会导致foo_ptr 悬空:
#include <iostream>
using foo_ptr = void(*)();
int main()
{
foo_ptr ptr{ nullptr };
{
ptr = []()
{
std::cout << "foo" << std::endl;
};
}
// Question: is ptr dangling?
ptr();
std::cout << "Done...";
std::getchar();
return EXIT_SUCCESS;
}
我认为答案是是的,因为 lambda 超出范围并将被销毁,但因为它用于生产代码,我想知道是否还有更多。
【问题讨论】:
-
ptr 将超出范围,但不是函数。
-
@Edgar Rokyan,感谢您提供的链接回答了我的问题,我很高兴承认我的问题可能被视为重复。