最近做测试,有点不理解,在这请假
我用malloc申请内存块, 然后 在代码后端 free ,并设置NULL,
编译,运行没有任何问题,
但用vglgrind 来检检测, 告诉我有内存泄露。 并且所错误应用了free,
这是为什么? 在main里不能使用 free吗?,编译也没报错呀。
int main(int argc char **argv){
char *a=(char *)malloc(sizeof(char)*100);
if(!a)
{
exit(-1);
}
memset(a,0,sizeof(char)*100);
.....
...
free(a);
a=NULL;
valgrind返回错误是
Invalid free()/delete/delete[]/realloc()
.....
....
LEAK SUMMARY:
definitely loast: 100bytes in 1 blocks
这是为什么? 急。
您可以看看一看您的完整代码里有没有改变了变量a的地址值,如果a的地址值改变后,再释放空间是不行的。
供参考:http://c.biancheng.net/view/383.html
可能你省略的代码里return了,所以导致没有free