Ios opengles中的glReadPixels()内存泄漏?

Ios opengles中的glReadPixels()内存泄漏?,ios,memory-leaks,opengl-es-2.0,glreadpixels,Ios,Memory Leaks,Opengl Es 2.0,Glreadpixels,我遇到内存泄漏问题。请参阅所附图片 注意用红线标记的区域。malloc空闲对内存是可以的,但是额外的3M内存是由glReadPixels分配的,我已经从doc读取了 glReadPixels没有提到任何mem alloc信息。 那么,glReadPixels真的分配内存吗?如果是的话,如何释放它?在一次调用中看到内存量增加远不是内存泄漏的确凿证据。在许多情况下,报告的可用内存不会返回到原始值,而不会出现任何错误。例如,正如@derhass在一条评论中所建议的那样,驱动程序可能正在分配一个尚未释放

我遇到内存泄漏问题。请参阅所附图片

注意用红线标记的区域。malloc空闲对内存是可以的,但是额外的3M内存是由glReadPixels分配的,我已经从doc读取了

glReadPixels没有提到任何mem alloc信息。
那么,glReadPixels真的分配内存吗?如果是的话,如何释放它?

在一次调用中看到内存量增加远不是内存泄漏的确凿证据。在许多情况下,报告的可用内存不会返回到原始值,而不会出现任何错误。例如,正如@derhass在一条评论中所建议的那样,驱动程序可能正在分配一个尚未释放的缓冲区,或者有意保留以供以后重用。根据内存使用情况的衡量方式,也可能是内存管理系统在释放内存时不向操作系统返回页面,而是保留页面以备将来分配


如果你想要更多的结论性数据,你需要重复这个操作。试着在一个循环中做1000次同样的事情,观察一段时间内内存的使用情况。如果它逐渐增加,您有理由相信可能确实存在内存泄漏。最好画一个情节。如果在压力测试期间内存使用量开始增加,然后趋于平稳,那么很可能一切正常。如果它在整个测试运行期间线性增加,则内存泄漏的可能性很大。

GL实现将自动管理其内部内存需求。这与你无关。很可能GL不会立即释放这样的缓冲区。非常感谢。通过您提到的测试,我得出结论,在删除fbo之前,glReadPixel时每个帧缓冲区都会保留内存。因此,这很好。我无法释放它。