像你这样free_pstring(ps + j * size_of_pstring)是不对的。
free既然只有1个参数,那它怎么知道要释放的内存块大小,说明在你使用malloc申请内存块的时候,这个连续地址里包含了内存块的大小信息。所以你应该直接用free(ps)释放申请的内存。当需要再次申请新的内存块时再使用malloc申请。
你可以试试:
char *str=(char *)malloc(sizeof(char)*5)
if(str)
{
strcpy(str,"abcd")
free(str+1)//正常释放应该轿没写free(str)
printf("%s",str)
}
你会发现释放后,闭芦纳地址依然可以正常哗册打印。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)