本文主要是介绍让其它线程获取到某一个线程申请的堆区,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
代码:
char* ptr;int Time=1;void* Func(void* arg)
{string str = (char*)arg;if(Time==1){char* p=(char*)malloc(10);ptr=p;Time--;}while (true){cout << str << " 地址:"<<(void*)ptr << endl;sleep(1);}return nullptr;
}int main()
{pthread_t tid[5];for (int i = 0; i < 5; i++){string s = "thread ";s += to_string(i);pthread_create(tid + i, nullptr, Func, (void*)s.c_str());sleep(1);}for(int i=0;i<5;i++){pthread_join(tid[i], nullptr);}
}
运行结果:
注意事项:
z
用cout输出指针的时候,必须强转成void* 。
因为对于指针类型的变量,应该使用%p
格式化字符串来打印其地址。但是,C++的std::cout
并不直接支持%p
,因此你需要将指针转换为void*
类型,然后std::cout
会自动以适当的格式打印地址。
这篇关于让其它线程获取到某一个线程申请的堆区的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!