我遇到glReadPixels内存泄漏问题。请参阅附件
注意标有红线的区域。免费对内存是正常的,但glReadPixels分配了额外的3M内存,我已从文档glReadPixels official doc中读取
没有提到glReadPixels的任何mem alloc信息。 那么,glReadPixels真的会分配内存。如果是这样,如何释放它呢?
答案 0 :(得分:1)
在单次调用中查看内存增加量远远不能确保内存泄漏。在许多情况下,报告的可用内存不会恢复到原始值,而不会出现任何错误。例如,正如@derhass已在评论中建议的那样,驱动程序可能正在分配尚未释放的缓冲区,或者故意保留以供以后重用。根据内存使用情况的测量方式,它也可能是内存管理系统在释放内存时不会将页面返回到操作系统,但会保留它们以供将来分配。
如果您想要更确凿的数据,则需要重复操作。尝试在循环中执行相同的操作1000次,并观察内存使用情况。如果它逐渐增加,你有理由相信可能确实存在内存泄漏。最好绘制一个情节。如果在压力测试期间内存使用率最初增加,然后变平,那么一切都很好。如果它在整个测试运行过程中线性增加,则存在内存泄漏的强烈情况。