HarmonyOS通过malloc申请内存时,返回到了通过thread_local定义的线程局部变量的地址上

HarmonyOS通过malloc申请内存时,返回到了通过thread_local定义的线程局部变量的地址上

HarmonyOS
2024-08-27 11:56:24
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
superinsect

malloc 在堆上分配内存,而 thread_local 变量存储在由编译器和运行时环境管理的特定于线程的内存区域中,正常使用是不会出现这种情况,如:

int *ptr = (int *)malloc(sizeof(int)); 
// 检查内存是否成功分配 
if (ptr == nullptr) { 
  OH_LOG_Print(LOG_APP,LOG_ERROR,0x0000,"no","111"); 
  return nullptr; 
} 
// 使用这块内存 
*ptr = 42; 
// 输出这块内存中的值 
OH_LOG_INFO(LOG_APP,"%{public}d",*ptr); 
// 使用free释放内存 
free(ptr); 
ptr = nullptr;
分享
微博
QQ
微信
回复
2024-08-27 19:11:12
相关问题
通过emitter实现worker间线程通讯
810浏览 • 1回复 待解决
HarmonyOS 变量定义与使用
289浏览 • 1回复 待解决