在这个简单的 C++ 线程程序中获取核心转储

问题描述 投票:0回答:1

我是 C++ 并发的新手。我只是尝试创建新线程并尝试运行它。 但我收到内存故障(coredump)错误。

现在可以找到导致内存故障的原因了。当我尝试使用 gdb 中创建的 coredump 进行调试时,我得到了这个,但无法理解错误在哪里

程序因信号 11(分段错误)而终止。 strcmp@@GLIBC_2.2.5 中的 #0 0x0000000000603d20 ()

#include<iostream>
#include<thread>

using namespace std;

void test(){
        std::cout<<"hi fro thread";
}

int main(){
        std::cout<<"hi fro main";
        std::thread myThread(test);
        myThread.join();
        return 0;
}
c++ multithreading concurrency segmentation-fault stdthread
1个回答
0
投票

这是错误。

using namespace std;
,并且在调用诸如 std::cout 之类的东西时仍然使用
std::
前缀。理论上,删除
using namespace std;
应该可以。

© www.soinside.com 2019 - 2024. All rights reserved.