当我 malloc pthread_t 保存新创建的线程 id 并将其释放到另一个线程时发生故障地址。代码如下:
typedef struct _TaskInfo {
// int dummy_int;
pthread_t tid;
} TaskInfo;
void* dummy_task(void* pArg) {
free(pArg);
return NULL;
}
void create_task() {
TaskInfo *pInfo;
pthread_attr_t attr;
// set detached state stuff ...
pInfo = (TaskInfo*) malloc(sizeof(TaskInfo));
pthread_create(&pInfo->tid, &attr, dummy_task, pInfo);
// destroy pthread attribute stuff ...
}
int main() {
int i;
while(i < 10000) {
create_task();
++i;
}
return 0;
}
当我取消注释 TaskInfo 的成员 dummy_int 时,它有时会成功运行,但有时会失败。我的平台是 VMWare + Ubuntu 9.10 + ndk r3
谢谢!