问题现象:valgrind内存未释放,malloc、calloc与free未成对出现
HEAP SUMMARY: ==62572== in use at exit: 262 bytes in 1 blocks ==62572== total heap usage: 116 allocs, 115 frees, 115,741 bytes allocated ==62572== ==62572== 262 bytes in 1 blocks are definitely lost in loss record 1 of 1 ==62572== at 0x483DD99: calloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==62572== by 0x1256C6: readfromfile2 (base.c:343) ==62572== by 0x123DB9: cert_parse(char*) (https_client.c:1522) ==62572== by 0x11EA7C: main (https_client.c:2527) ==62572== ==62572== LEAK SUMMARY: ==62572== definitely lost: 262 bytes in 1 blocks ==62572== indirectly lost: 0 bytes in 0 blocks ==62572== possibly lost: 0 bytes in 0 blocks ==62572== still reachable: 0 bytes in 0 blocks ==62572== suppressed: 0 bytes in 0 blocks
解决办法:成对出现
情况1:直接能够观察到malloc和free不匹配,free掉,并置NULL;
情况2:直接看不出没有被释放,则查看函数调用关系,最里层函数申请的内存,若当前指针回回传到上一层函数,则考虑在上层函数释放。



