换装迷宫x金手指,网王之神之少女,京城81号2真实故事
#include <iostream> #include <thread> #include <unistd.h> using namespace std; class bad{ public: bad(int* i) : data(i){ cout << "addr2:" << data << endl; } void operator()(){ for(unsigned j = 0; j < 10000000000; ++j){ something(data); } } private: void something(int* i){ *i = 100; cout << *i << endl; }; int* data; }; void func(){ int* local = new int(10); cout << "addr1:" << local << endl; bad b(local); thread t(b); //cout << "before join " << *local << endl; delete local; cout << "end delete" << endl; t.detach(); //t.join(); cout << "after join " << *local << endl; cout << "func end" << endl; } int main(){ func(); sleep(10); cout << "end" << endl; }
#include <thread> #include <unistd.h> using namespace std; class bad{ public: bad(int*& i) : data(i){ cout << "addr2:" << data << endl; } void operator()(){ for(unsigned j = 0; j < 10000; ++j){ something(data); } } private: void something(int*& i){ *i = 100; cout << *i << endl; }; int*& data; }; void func(){ int* local = new int(10); cout << "addr1:" << local << endl; bad b(local); thread t(b); //cout << "before join " << *local << endl; delete local; cout << "end delete" << endl; t.detach(); //t.join(); cout << "after join " << *local << endl; cout << "func end" << endl; } int main(){ func(); sleep(10); cout << "end" << endl; }
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
如何在没有core文件的情况下用dmesg+addr2line定位段错误
用QT制作3D点云显示器——QtDataVisualization
网友评论