首页 > 解决方案 > 释放设备上的 cl::Buffer 和内存泄漏

问题描述

我们知道,在 openCL 中通过使用cl::CreateBuffer()我们可以在设备中创建缓冲区,并在那里分配内存。但我的问题是终止程序后缓冲区是否会空闲,或者我们应该使用一个函数来释放内存以防止设备上的内存泄漏。

标签: memory-leaksbufferopencl

解决方案


cl::Buffer返回的对象的析构函数cl::CreateBuffer()将释放缓冲区,这也将释放设备上分配的任何内存。这是您应该依赖的主要机制。

即使分配了资源,由于任何原因(崩溃、干净退出)的进程死亡也会破坏设备驱动程序中进程的上下文句柄,这将导致驱动程序执行清理。

当然,堆栈任何级别的错误都可能阻止这种情况在所有情况下正确发生,但一般来说,一旦您的进程终止,一切都应该重置。


推荐阅读