gpt4 book ai didi

c++ - 使用 clang 8 的 lambda 表达式中的 Double-free 崩溃

转载 作者:可可西里 更新时间:2023-11-01 17:59:51 28 4
gpt4 key购买 nike

当将 std::vector 移动到 lambda 表达式中并且 lambda 表达式抛出异常时,我在 clang 8.0 上因双重释放而崩溃。来自其他编译器(如 gcc 或 clang 7)的可执行文件运行无误。

我是否在我的代码中做了一些非法的事情?

template<typename F>
void myExecute(F&& f)
{
f();
}

int main()
{
try {
std::vector<double> test = {0.0, 1.0};
myExecute([v = std::move(test)]() {
throw std::runtime_error("exception");
});
}
catch (const std::exception& e) {
std::cout << e.what() << std::endl;
}
}

Try it in wandbox

最佳答案

与此同时,我在 llvm bugzilla 中找到了匹配的错误报告:

https://bugs.llvm.org/show_bug.cgi?id=41810

我现在确信这是一个编译器错误,而不是我的代码中的问题。

关于c++ - 使用 clang 8 的 lambda 表达式中的 Double-free 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57313551/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com