内存泄露问题?
情况是这样的:
在程序中会用到这样的一条语句std::list<int> num;
情形1:当我把这条语句声明为类的成员变量的时候,然后在类的成员函数中使用这个变量,这样的话帧速率骤降,降到只有10帧,很难接受,我的类的析构函数没有处理这个变量;
情形2:当我在使用这条语句的成员函数中将他声明为局部变量的时候,然后再使用,那么这时候帧速率正常;
这两种情形,我调了好久才发现的,在输出台上两种情况都出现这样的提示:Detected memory leaks!
求解释!!!
[解决办法]
std::list <int>应该不会有内存泄露问题,内存泄漏是其它地方的,因为int不是动态分配的。如果是list<指针>的话,需要手动删除里面的每一个指针,不删除会引起内存泄露。
如果是作为类的成员变量,并且每帧要更新它的内容的话,帧速率下降可能是因为你每次更新数据前没有clear导致其中的数据过多引起的。局部变量每次都会销毁,所以不会引起数据过多。
[解决办法]
我猜测,你用错了。用局部变量不掉帧是因为局部变量自动析构了,不消耗内存。用成员变量掉帧是因为你每次都往list中加数据,却没有clear,每秒往里面加很多数据,再多的内存也消耗不起……
[解决办法]
我觉得也应该是你一直添加元素,导致list过长后效率下降