C++ Mac OSX 10.7.2上gcc 4.9.1下的线程_local似乎已损坏
这是我第一次来这里。。。 我正在尝试使用多线程C++代码。 我使用的是MacOSX10.7.2。 因为操作系统和编译器太旧了,不支持c++11, 我按照这里的指示做了 我似乎有一个工作GCC4.9.1,但后来我尝试了一些 多线程C++ Mac OSX 10.7.2上gcc 4.9.1下的线程_local似乎已损坏,c++,multithreading,macos,c++11,thread-local-storage,C++,Multithreading,Macos,C++11,Thread Local Storage,这是我第一次来这里。。。 我正在尝试使用多线程C++代码。 我使用的是MacOSX10.7.2。 因为操作系统和编译器太旧了,不支持c++11, 我按照这里的指示做了 我似乎有一个工作GCC4.9.1,但后来我尝试了一些 多线程 #include <thread> using namespace std; class X { public: char *p; X() : p(0) { } ~X() { if (p) delete[] p; } voi
#include <thread>
using namespace std;
class X {
public:
char *p;
X() : p(0) { }
~X() { if (p) delete[] p; }
void set(int n) { p = new char[n]; }
};
void task()
{
static thread_local X x;
x.set(8*23);
}
int main()
{
thread t1(task);
thread t2(task);
thread t3(task);
thread t4(task);
thread t5(task);
t1.join();
t2.join();
t3.join();
t4.join();
t5.join();
}
我会遇到如下错误:
a、 out(50392,0x100605000)malloc:*对象0x137fe130400db0的错误:未分配要释放的指针
*在malloc\u error\u break中设置断点以进行调试
非法指令:4
a、 输出(50405,0x102a70000)malloc:*对象0x137fcf22500060的错误:未分配要释放的指针
*在malloc\u error\u break中设置断点以进行调试
非法指令:4
我尝试添加-pthread和-lpthread作为命令行选项,但没有帮助。
我还添加了print语句,这表明错误消息中的地址是静态本地对象本身的地址
也许我正试图在一个太过时的环境中运行它。
或者可能是正确的运行时没有链接进来。
我不确定是否有人能帮上忙…也许我只是需要获得访问权限
更先进的系统
谢谢
/usr/gcc-4.9.1/bin/g++-4.9.1 -g -std=c++11 simple.c