malloc的free问题。
aData.subdata = (uint8_t *)malloc(ret-17);
malloc申请空间。
printf("parse aData buf:--------------------------------\r\n");
for(i = 0;i < subdatalen;i++){
aDat->subdata[i] = data[i+13];
printf("%#x ",aDat->subdata[i]);
}
memcpy(aDat->subdata,&(data[13]),subdatalen);
使用memcpy赋值不会改变指针地址。
// aDat->subdata = data + 13;
直接将地址赋值将会修改malloc申请空间的地址。
free(aData.subdata);
导致free原malloc地址时出现异常。
本文探讨了在C语言中使用malloc分配内存并利用memcpy进行数据复制的方法。通过一个具体的例子展示了如何避免因直接赋值地址而导致的free操作异常,并强调了正确的内存管理对于程序稳定性的重要性。
1万+

被折叠的 条评论
为什么被折叠?



