本文共 6158 字,大约阅读时间需要 20 分钟。
前言
有个写好的cm有内存泄漏,跑了一天,给客户的计算机内存(好像还蛮大的内存)用的差不多了。
当停掉这个cm时,内存一下就正常了(不知道是不是OS给回收了)。
就在找这个内存泄漏问题,bug还没找完。
先发现了一个由map.insert使用不当引起的内存泄漏。
按照c++ reference的说法,同一个key,不同的value, 插入map时。map会更新这个value.
我做的实验,不会更新value.
正确的做法。插入key-value之前,需要find一下key.
如果key不在,选择插入。
如果key存在,可以按照业务逻辑,不插入或更新value.
如果没有将value插入map, 就需要删掉要插入的value(假设value是指针)。
写C程序时,还是要细致点。有些不常用的知识点,如果不太确定,可以先做个实验,再写正式代码。
写好后,运行一些可以想到的测试用例,保证加入的功能模块是正确的(逻辑正确,无内存泄漏,最好性能也好点)。
这样做以后,回头来改bug的概率就小了。等代码堆多了,再回头来修bug, 找bug也要一些时间的。
实验
// @file main.cpp// view date time// date "+DATE: %m/%d/%y%nTIME: %H:%M:%S"// set date time// date -s "2018-3-13 14:25:00"#include #include #include #include #include
转载地址:http://zfmvf.baihongyu.com/