我在线程函数 f1
中分配了 heap
内存,这个内存用于计算堆区的值,以便主函数可以看到它。
以下是线程函数的定义:
void *f1(void *input){
int sum = (int*)malloc(sizeof(int));
/* Do calculation */
pthread_exit((void*)&sum);
}
在上面的代码中,
sum
是动态分配的存储空间,其地址作为返回值传递给 main()
中的 sum1
。我在
main()
中这样使用 join
函数来加入线程:void *sum1;
pthread_join(tid1,(void**)&sum1);
我取回值后,希望free
已分配的内存空间。但当我在主函数中使用free
时,会出现munmap_chunk(): invalid pointer
这样的错误提示。
我该怎么明确且安全地free
这段内存空间呢?
int sum
,我猜这里需要一个指针。 - prog-fh