OpenCL EXC_BAD_ACCESS(代码= 1,地址= 0xc00)

时间:2018-03-25 16:44:26

标签: c++ xcode opencl

我创建了一个基本的OpenCL代码,应该进行矩阵乘法。我不确定我可能犯了什么错误,但我收到了这个错误:

线程1:EXC_BAD_ACCESS(代码= 1,地址= 0xc00)

经过一些研究后,当程序试图访问一个已经释放或指向不期望的位置的内存位置时,实际上会出现错误。但是我不明白在my code中调用clCreateProgramWithSource的情况可能是什么情况。

仅供参考,我只是尝试将第三个参数更改为NULL,在这种情况下它实际上可以正常工作,但是当传递与内核字符串相对应的正确字符串值时失败。

(我使用Xcode 9.2)

有人可以对此有所了解。

提前致谢。

1 个答案:

答案 0 :(得分:2)

In the code you have mentioned:

string sourceCode = readFile("/Users/rajkumar/Documents/OpenCL/Kernels/matmul.cl");

// Create a program from the kernel source
size_t len = (size_t)sourceCode.length();
size_t * len_ptr = &(len);
cl_program program = clCreateProgramWithSource(opencl->context,
                                               1,(const char**)&sourceCode,
                                               NULL,&clStatus);

You cannot cast std::string* to a const char**. You should call sourceCode.c_str(), then store it to a temporary variable of type const char*, and pass a pointer to this variable into clCreateProgramWithSource().