我有一个函数,里面有malloc操作,然后返回他的oid* 指针,如:void* fun();void* b = fun();却发现返回值b不是fun内部malloc返回的地址。跟踪调试发现在 函数 fun 退出的时候 函数指针还正确,跟踪 寄存器 rax的值 也是正确的,但是当执行到void* b = fun();之后,发现 b的值不正确。我是多线程环境。codestruct task* make_task_null(){struct task* t = (struct task*)malloc(sizeof(struct task));clean_task(t);return t;}void clean_task(struct task* t){memset(t,0x00,sizeof(struct task));}fun(){strcut task* t = make_task_null();}
2 回答
MMMHUHU
TA贡献1834条经验 获得超8个赞
函数的返回值要用相应的类型的指针变量来接受它,如果是动态分配内存时可以将malloc强制转换成基类型或结构体类型。
如:
int *fun(){
static int *p;
p=(int*)malloc(100);
return p;
}
// 接受部分:
int *p=fun();
添加回答
举报
0/150
提交
取消