2005年11月18日

Struct的释放问题

以往编写C++程序的时候,比如要将一组对象装入到一个向量里面,我经常是在循环外面申明一个新的对象,然后在循环里面先clear一下,然后装入数据到其中再装入到向量中。这种方法不会引起内存的泄漏问题。最近在写一个程序的时候其中有一个函数需要多次调用,每次调用的时候都需要申请一个结构体,然后处理完结构体再传回放入一个向量中。

编程程序的时候想当然的认为这里不会引起内存泄漏的问题,因为结构体有生存周期,应该会自动释放的。今天在大规模测试我的程序的时候居然发现随着测试样本的增加,内存占用越来越多,幸亏没有进行更大规模的测试,否测机器可能会崩溃掉的。哈哈,后来想到了这个隐含的bug。函数中加上了结构体的释放,这才使得程序在内存消耗上稳定下来。

后来查阅资料明白了,STL自带的各种容器对象都有自带的内存释放操作。而结构体是C的元素,没有加上释放,指针也有类似的问题。

以后编程程序一定要注意这些问题。当然,这也告诉我以后写完程序一定要多做测试,这样才能尽可能的发现和解决各种潜在的问题。

没有评论: