这段代码存在问题吗?Type_sByte wsbTpCtlSelfTest(Type_uByte aubSrcId) { Type_sByte asbRet = TPCTL_OPER_RESULT_NG; Type_uWord *awwArpcSrcId_p = (Type_uWord*)malloc(sizeof(Type_uWord)); *awwArpcSrcId_p = aubSrcId; pthread_t astThrd_ts; pthread_attr_t astThrdAttr_ts; pthread_attr_init(&astThrdAttr_ts); /* 创建分离式线程,线程结束后由系统回收资源 */ pthread_attr_setdetachstate(&astThrdAttr_ts, 1); /* 创建线程 */ asbRet = pthread_create(&astThrd_ts, &astThrdAttr_ts, nvdTpCtlSelfTestThreadMain, (void*)awwArpcSrcId_p); /* 返回0代表成功,转换成TPCTL的成功宏 */ if (0 == asbRet) { TPCTL_DEBUG("thread create success.\n"); asbRet = TPCTL_OPER_RESULT_OK; } /* 0以外(一般是-1)代表失败,转换成TPCTL的失败宏 */ else { TPCTL_ERROR("thread create failed. error no(%d)\n", asbRet); asbRet = TPCTL_OPER_RESULT_NG; } return asbRet; }
时间: 2023-04-01 22:01:11 浏览: 86
去掉这段代码的话在IE下显示会有问题
); if(pthread_attr_setdetachstate(&astThrdAttr_ts,PTHREAD_CREATE_DETACHED) != ) { free(awwArpcSrcId_p); return TPCTL_OPER_RESULT_NG; } if(pthread_create(&astThrd_ts,&astThrdAttr_ts,wsbTpCtlSelfTestThread,awwArpcSrcId_p) != ) { free(awwArpcSrcId_p); return TPCTL_OPER_RESULT_NG; } asbRet = TPCTL_OPER_RESULT_OK; return asbRet; }
回答:这段代码存在问题,因为在函数中使用了malloc函数动态分配内存,但是没有在函数结束后释放该内存,可能会导致内存泄漏问题。同时,在创建线程时,没有检查线程创建是否成功,也没有处理线程创建失败的情况,可能会导致程序异常。建议在函数结束前添加释放内存的代码,并在创建线程时添加错误处理机制。
阅读全文