1
我有下面的代码保存点云在我的GPU缓存:的OpenCL/C++ - 返回一个CL ::缓冲区对象
cl::Buffer writePointCloudToGPU(pcl::PointCloud<pcl::PointXYZ>& pointCloud){
cl_int err;
cl::Buffer bufferCloud(getContext(), CL_MEM_READ_WRITE, sizeof(pcl::PointXYZ) * pointCloud.size(), NULL, &err);
getQueue().enqueueWriteBuffer(bufferCloud, CL_TRUE, 0, sizeof(pcl::PointXYZ) * pointCloud.size(), const_cast<float*> (&pointCloud.points[0].x), NULL);
return bufferCloud;
}
这是否会导致内存泄漏问题,当我返回CL ::缓冲?一旦我返回bufferCloud对象,它的程序何时释放它呢?
对于1.2版,没有在析构函数,其中,被称为释放()时,例如超出范围(当您返回后拷贝构造函数的工作就被破坏了,当你把它分配给一个变量,又称为析构函数在复制构造函数调用之后,当超出范围时,调用它的析构函数)。对于2.0+版本,里面有智能指针,所以更好的用法可以在那里。也许复制elision在里面工作。 –