typedef struct {
int a;
void *b;
} test_t;
void func3(void *args)
{
test_t tt = (test_t *)args;
printf("%d: %s\n", tt->a, (char *)tt->b);
}
int func2(void *args, size_t len)
{
void *s;
if (len) {
s = calloc(1, len);
memcpy(s, args, len);
}
func3(s);
return 0;
}
int func1()
{
test_t t;
const char *ss = "abcddddd";
t.a = 1;
t.b = strdup(ss);
func1((void *)&t, siztof t);
return 0;
}
int main()
{
func1();
exit(0);
}這里想問以下, func3函式中tt->b 有問題嗎,還是指向func1中那個申請的記憶體嗎?
哪位大佬能夠分析一下阿,有點暈。
uj5u.com熱心網友回復:
func1((void *)&t, siztof t); 錯誤,你要的應該是 func2((void *)&t, siztof t);test_t tt = (test_t *)args; 錯誤,你要的應該是 test_t *tt = (test_t *)args;
在 func2 中 s = calloc(1, len); 應該已經是一段新記憶體了
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/238783.html
標籤:單片機/工控
