崩溃当std ::函数是从lambda返回的VS 2012中返回的值时的崩溃
Crash when std::function is constructed from lambda returned value in VS 2012
此C 代码与VS 2012成功编译,但在运行时崩溃:
#include <iostream>
#include <functional>
void f()
{
std::cout << "f called" << std::endl;
}
int main()
{
auto get_f= []()
{
bool b = true;
return b ? f : f;
};
std::function<void()> filter(get_f()); // crash here!!!
return 0;
}
如果我们将get_f更改为:
auto get_f= []()
{
return f;
};
然后程序运行而不会崩溃。
此代码或编译器/STD库错误是问题吗?
我尚未使用较新版本的Visual Studio进行测试。
它在我看来就像标准库(或可能是编译器)的问题。
使用VS 2013,它毫无问题地编译和运行。如果我们添加代码以调用运行的filter
:
#include <iostream>
#include <functional>
void f()
{
std::cout << "f called" << std::endl;
}
int main()
{
auto get_f= []()
{
bool b = true;
return b ? f : f;
};
std::function<void()> filter(get_f()); // crash here!!!
filter();
return 0;
}
输出:f called
相关文章:
- CoInitialize()在单独的线程上崩溃而不返回
- 在函数内部错误定位后,从函数中释放返回的指针会导致芯片崩溃
- C++ 非 void 函数的崩溃没有返回语句
- 为什么下面的使用链表实现线性队列的代码返回垃圾值然后崩溃
- 返回向量<对<字符串,字符串>>会导致 gcc 编译代码 (curlcpp) 崩溃
- 具有协变返回类型的方法在 VC++ 上崩溃
- 一个函数怎么能完成它的目标,只是在返回主函数后崩溃?
- 当功能返回时,Linux C 系统()调用崩溃
- 试图返回布尔值时,程序崩溃
- 崩溃当std ::函数是从lambda返回的VS 2012中返回的值时的崩溃
- 为什么此代码可能会在C++中崩溃(指针返回)
- 代码运行良好,但从 main() 返回时崩溃
- 为什么glGetProgramiv GL_ACTIVE_UNIFORMS偶尔会返回垃圾并使我的程序崩溃
- VS2012 甲骨文unique_ptr崩溃的返回矢量
- 返回 0 之前的主要崩溃
- 返回 std::string 的函数在没有 return 语句的情况下崩溃,这与返回 int 而不返回语句的函数不同
- 如何找到检测到 Cuda API 错误时程序崩溃的位置:cudaMemcpy 返回 (0xb)
- Win8 应用在 Win10 上崩溃 (D3D11CreateDevice 返回空值)
- glLinkProgram崩溃,即使glCompileShader没有返回任何错误
- 从函数崩溃返回,仅在代码中的某个点之后