类成员的OpenCL上下文范围?

时间:2014-02-24 15:43:52

标签: c++ opencl

我正在读一本关于OpenCL的书,上面写着

  

与创建平台和设备的功能不同,   clCreateContextFromType和clCreateContext返回cl_contexts   错误代码这意味着您不必分配和取消分配   结构的记忆。如果cl_context声明为local   变量,其内存将在封闭时自动释放   功能终止。

我将上下文保持为类成员。

class MyOpenCL
{
    private:
        cl_context context;
};

在类被破坏之前,它会留在内存中吗? 如果没有那么什么是替代品呢? 我不喜欢引用计数机制。

1 个答案:

答案 0 :(得分:3)

是的,如果您的cl_context变量是类成员,则用于保存此变量的内存将在类实例的生命周期内保留。事实上,cl_context实际上只是指向实际上下文对象的指针,因此在调用clReleaseContext()之前,上下文本身不会被销毁,无论何时内存持有cl_context变量被解除分配。您应该确保在完成上下文后调用clReleaseContext(),例如在类析构函数或其他合适的位置。