菜鸟笔记
提升您的技术认知

malloc和free使用要小心

先说一下用法:

       char *stemp = (char*)malloc(256 * sizeof(char));
        if(stemp == NULL) return FALSE;

注意有可能分配失败,所以这里需要判空一下。

使用结束要free:

        free(stemp);
        stemp = NULL;

今天使用的时候突然蹦出来弹框:

心情又崩溃了,想换其他方法了,想想还是把问题解决了;找啊找。。。。

发现问题出在free那里,Debug看一下free里面的指针不为空啊,重新来,看char *stemp = (char*)malloc(256 * sizeof(char));

再看free的时候:

去,怎么不一样了?

最后又找,好长的函数,终于找到了

对指针赋值了。

【总结】使用malloc和free的时候,一定好注意,不要对分配的指针赋值操作了,复制后,free找不到原来的指针,必然会报错。也就是说,malloc和free是成对出现,free的时候指针必须是malloc过的。对指针的操作,的确需要很深的“内功”。