除了使用new关键字分配内存之外,还有什么会导致C++中的内存泄漏?我有一个项目,似乎整个节目都有几处内存泄漏,但我一次都没有使用new关键字。此外,当我不小心让它运行了几个小时(4-6个小时)时,我回来后发现它也在慢慢地吞噬cpu周期。不确定这是否会是内存泄漏的直接结果(此时它几乎占用了我所有的可用内存),因为当再次启动程序时,它不会明显地发生,但内存泄漏是。谢谢!
发布于 2017-01-12 18:00:50
它可以是各种各样的东西,比如
vector,并且从不removing,则第三方sockets引用中的内存泄漏
发布于 2017-01-12 18:26:07
malloc、realloc或calloc或平台特定的分配函数,如mmap并丢失返回的指针。SDL_Quit.SDL_Init,即使使用正确,也会泄漏内存。发布于 2017-01-12 18:04:18
有多种方法可以消耗CPU和内存。
分析是查看CPU使用情况的最佳工具。如果你有一些日志记录,你应该能够知道它在哪里花费时间。
字符串是内存使用的罪魁祸首-如果你在程序开始时读取了大量数据(例如XML config等),并且没有让它超出范围,即使你自己没有显式调用new,它也会一直挂在那里直到程序结束。保持句柄打开,例如数据库连接、文件等也会消耗资源。
如果不使用引用或其他方式进行共享,您也很容易结束复制数据。
试着找到一种简单的方法来衡量你正在做的事情,并从那里开始。
https://stackoverflow.com/questions/41610039
复制相似问题