除了使用new关键字分配内存之外,C ++中可能导致内存泄漏的原因是什么?我有一个项目,整个节目似乎有几个内存泄漏,但我没有使用过一次new关键字。此外,当我不小心让它运行了几个小时(4-6)时,我回来看它已经慢慢吞下cpu周期......不确定这是否是内存泄漏的直接结果(由此它点几乎占用了我所有的可用内存),因为在重新启动程序时它并没有明显发生,但是内存泄漏了。 谢谢!
答案 0 :(得分:1)
可能是各种各样的事情,如
vector
并且永不删除答案 1 :(得分:0)
有多种方法可以咀嚼CPU和内存。
分析是查看使用CPU的最佳工具。如果您有一些日志记录,您应该能够知道它在哪里花费时间。
字符串经常出现内存使用的罪魁祸首 - 如果您在程序开头附近读取了大量数据(例如XML配置等)并且不让它超出范围,那么它将一直延续到程序结束即使你没有明确地自己调用new
。保持手柄打开,例如数据库连接,文件等也会占用资源。
如果您不使用引用或其他方式共享,您也可以轻松地最终复制数据。
尝试找到一种简单的方法来衡量你在做什么并从那里开始。
答案 2 :(得分:0)
malloc
,realloc
或calloc
或平台特定的分配函数,例如mmap
并丢失返回的指针。SDL_Init
的情况下调用SDL_Quit
。