gpt4 book ai didi

c++ - OpenCV 分配导致 std::thread::join 中出现段错误

转载 作者:太空宇宙 更新时间:2023-11-03 23:18:45 32 4
gpt4 key购买 nike

下面的代码在 std::thread 类的 .join() 中抛出一个段错误。但是,只有我使用 cv::fastMalloc 分配数据数组时才会发生这种情况。如果我使用“new”关键字或 std::malloc 函数,则不会发生错误。

我需要了解为什么会发生此错误,因为实际上我需要一个使用此函数的 cv::Mat。

int main() {
uchar* data = (uchar*) cv::fastMalloc(640);

std::atomic<bool> running(true);
std::thread thread([&] () {
while(running) {
// I'll perform some process with data here
// for now, just to illustrate, I put thread to sleep
std::this_thread::sleep_for(std::chrono::milliseconds(100));
}
});
std::this_thread::sleep_for(std::chrono::seconds(1));

running = false;
// segfault is thrown here
thread.join();

cv::fastFree(data);
return 0;
}

GDB 调用栈如下

#0 00429B26 _pthread_cleanup_dest () (??:??)
#1 003E32A0 ?? () (??:??)

有人知道会发生什么吗?我真的觉得这太疯狂了:S。

谢谢。

最佳答案

我通过重新安装 opencv 解决了这个问题。显然问题是我编译 opencv 的编译器版本不同,我在这个例子中使用。

为了记录,我前段时间用不支持 std::thread 的 MinGW 版本编译了 opencv(我认为是 4.7.x)。

关于c++ - OpenCV 分配导致 std::thread::join 中出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34701652/

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