memory-leaks - 释放设备上的 cl::Buffer 和内存泄漏
问题描述
我们知道,在 openCL 中通过使用cl::CreateBuffer()
我们可以在设备中创建缓冲区,并在那里分配内存。但我的问题是终止程序后缓冲区是否会空闲,或者我们应该使用一个函数来释放内存以防止设备上的内存泄漏。
解决方案
cl::Buffer
返回的对象的析构函数cl::CreateBuffer()
将释放缓冲区,这也将释放设备上分配的任何内存。这是您应该依赖的主要机制。
即使分配了资源,由于任何原因(崩溃、干净退出)的进程死亡也会破坏设备驱动程序中进程的上下文句柄,这将导致驱动程序执行清理。
当然,堆栈任何级别的错误都可能阻止这种情况在所有情况下正确发生,但一般来说,一旦您的进程终止,一切都应该重置。
推荐阅读
- java - 如何从 listview Android-Studio 设置文本
- java - 如何将附件添加到我的邮件发件人 JavaMail?
- excel - 文本框中的开始和结束选择 - VBA
- vb.net - “位置 0 没有行”
- sql-server - 修改存储为 Varbinary 的 SQL 字段中的 XML
- html - 当它们以未知宽度包装时如何指定弹性项目?
- kotlin - Windows 上的 Kotlin Native libcurl 示例
- java - Play Framework 无法处理超过 12 个并发连接
- c++ - 使用 wxWebView 时应该如何避免崩溃
- jquery - 将字符串的第一部分大写