有谁知道为什么会导致分段错误?
int main ()
{
udp_client *client = new udp_client("192.168.160.128", 2500);
client->mysetsockopt("af");
client->askForFileAndID();
client->getFileSize();
//this line causes the seg fault error
std::thread t1(&udp_client::sendFiletoServer, client);
return 0;
}
答案 0 :(得分:2)
分段错误只能在运行时发生,如果您有分段错误,则编译并链接您的程序。问题可能是您的程序在创建thread
后完成执行。尝试加入thread
t1。
添加:
t1.join();
从主回来之前。
答案 1 :(得分:0)
您需要与pthreads链接。要完成此操作,只需将-pthread
添加到编译标志中即可。
请注意,如果您想要静态链接(糟糕的想法),您还需要添加其他一些东西。即:-Wl,--whole-archive -lpthread -Wl,--no-whole-archive