struct node
{
public:
char *s;
int up;
node()
{
up = 0;
s = new char[1000];
memset (s, 0, sizeof(char) * 1000);
}
~node()
{
delete [] s;
}
void insert()
{
s[up++] = 'a';
}
};
void* test_thread(void *arg)
{
pthread_mutex_lock( &mutex1 );
node n;
n.insert();
printf ("%s\n", n.s);
printf ("%x\n", &n);
pthread_mutex_unlock( &mutex1 );
pthread_exit(0);
//return 0;
}
假设这个函数将由
pthread_create(&id1, NULL, test_thread, NULL);
pthread_create(&id2, NULL, test_thread, NULL);
它是由
g++ test_thread.cpp -o main -lpthread -g
它的结果是
a
40a001a0
a
40a001a0
在我的 Linux 算子中,两个线程中节点 n 的地址是一样的!
我想知道为什么线程包含的节点n的地址是一样的?
任何答案都非常感谢~~~
谢谢~~~