程序句柄泄漏

       最近行情服务器很不稳定, 几天就当掉。 而且还把整台服务器都给搞死了, 原因查了很久, 都没找出问题所在, 一般认为是把内存给吃完了,导致系统奔溃。 可是同事每天都在跟踪, 没见内存被吃多少。 今天终于在老大的指点下, 用process explorer查看到了EI(行情服务器管理控制器)的句柄数竟然达到了10多万个, 后来调试跟踪发现,确实有的地方没有closehandle。 对于以后写的程序, 特别是长时间运行的, 要利用类似process explorer 来查看资源是否有泄漏, 不但包括内存, 还有句柄等其他各种资源。 如果无法定位句柄泄漏的地方,可以尝试利用windbg来调试。

       对于内存泄漏这块, 参考林博士的高质量C++编程指南里关于内存的管理的规则:

l  【规则7-2-1mallocnew申请内存之后,应该立即检查指针值是否为NULL。防止使用指针值为NULL的内存。

l  【规则7-2-2不要忘记为数组和动态内存赋初值。防止将未被初始化的内存作为右值使用。

l  【规则7-2-3避免数组或指针的下标越界,特别要当心发生“多1”或者“少1”操作。

l  【规则7-2-4动态内存的申请与释放必须配对,防止内存泄漏。

l  【规则7-2-5freedelete释放了内存之后,立即将指针设置为NULL,防止产生“野指针”。

顺便检查一下, 如果基类被多次继承, 子类中的析构函数否要添加virtual。防止调用子类的析构函数时, 没有调相应基类的析构函数。

 

你可能感兴趣的:(编程,c,服务器,null,delete)