我正在读一本关于OpenCL的书,上面写着
与创建平台和设备的功能不同, clCreateContextFromType和clCreateContext返回cl_contexts 错误代码这意味着您不必分配和取消分配 结构的记忆。如果cl_context声明为local 变量,其内存将在封闭时自动释放 功能终止。
我将上下文保持为类成员。
class MyOpenCL
{
private:
cl_context context;
};
在类被破坏之前,它会留在内存中吗? 如果没有那么什么是替代品呢? 我不喜欢引用计数机制。
答案 0 :(得分:3)
是的,如果您的cl_context
变量是类成员,则用于保存此变量的内存将在类实例的生命周期内保留。事实上,cl_context
实际上只是指向实际上下文对象的指针,因此在调用clReleaseContext()
之前,上下文本身不会被销毁,无论何时内存持有cl_context
变量被解除分配。您应该确保在完成上下文后调用clReleaseContext()
,例如在类析构函数或其他合适的位置。