Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Mac OSX 10.7.2上gcc 4.9.1下的线程_local似乎已损坏_C++_Multithreading_Macos_C++11_Thread Local Storage - Fatal编程技术网

C++ Mac OSX 10.7.2上gcc 4.9.1下的线程_local似乎已损坏

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

这是我第一次来这里。。。 我正在尝试使用多线程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; }
   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