C语言中Free函数释放内存为何释放不了!!!!!!!

#include
#include

void testFree(char *par)
{
void*free(par);
par = NULL;
}

int _tmain(int argc, _TCHAR* argv[])
{
char path[10] = {"abc"};
char *str = (char *) malloc(100 *sizeof(char));
memset(str,0x00,100 *sizeof(char));
memcpy(str,path,strlen(path));
printf("wwl1:%s\n",str);
testFree(str);
printf("wwl2:%s\n",str);
return 0;
}

打印结果为: wwl1:abc wwl2:abc

正常的话不是应该为:wwl1:abc wwl2:(null) d 的么?为何输出有误,为何str内存并未释放?testFree函数地址传递有误么?

2个回答

去掉free前面的void*

u010298834
王维来 哇哦,我终于明白了,纠结了一天了都,非常感谢!!!!!!
大约 5 年之前 回复
a1193561652
纵横车 回复王维来: 内存释放了,后面应该会打出乱码,指针指向非空是因为子函数里赋值的局部变量,如果想在子函数里改变str要用2级指针。
大约 5 年之前 回复
u010298834
王维来 去掉前面的 void* 的话str的内存仍未释放,其地址指向仍非空,也不知道为啥!
大约 5 年之前 回复
u010298834
王维来 去掉前面的 void* 的话str的内存仍未释放,其地址指向仍非空,也不知道为啥!
大约 5 年之前 回复

去掉free前面的void*

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐