我们知道,在openCL中,通过使用cl::CreateBuffer()
,我们可以在设备中创建缓冲区,并在其中分配内存。但是我的问题是,终止程序后缓冲区是否将释放,或者有一个函数应该释放内存以防止设备上的内存泄漏。
cl::Buffer
返回的cl::CreateBuffer()
对象的析构函数将释放缓冲区,该缓冲区还将释放设备上分配的所有内存。这是您应该依赖的主要机制。
由于任何原因导致进程死亡(崩溃,干净退出),即使分配了资源,也会破坏设备驱动程序中进程的上下文句柄,这将导致驱动程序执行清理。
当然,在任何情况下,堆栈中任何级别的错误都可能在任何情况下均无法正常发生,但是通常,一旦进程终止,则应重置所有内容。