1. 程式人生 > >malloc和free使用要小心

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過的。

對指標的操作,的確需要很深的“內功”。