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

标签 c++ xcode opencl

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

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

经过一些研究后发现,错误实际上是在程序试图访问内存位置时抛出的,该位置要么已经被释放,要么指向一个不应该访问的位置。但是我不明白在 my code 中可能是这种情况。调用 clCreateProgramWithSource。

仅供引用,我只是尝试将第三个参数更改为 NULL,在这种情况下它确实有效,但在传递与内核字符串对应的正确字符串值时失败。

(我使用 Xcode 9.2)

有人可以解释一下吗。

提前致谢。

最佳答案

在您提到的代码中:

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);

您不能将 std::string* 转换为 const char**。您应该调用 sourceCode.c_str(),然后将其存储到 const char* 类型的临时变量中,并将指向该变量的指针传递给 clCreateProgramWithSource()

关于c++ - OpenCL EXC_BAD_ACCESS(代码=1,地址=0xc00),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49478267/

相关文章:

c++ - 糟糕的编码习惯? && 条件下的预增量

linux - 你能在 Linux 上运行 Xcode 吗?

iphone - 向应用程序添加背景音乐时构建失败

optimization - 乘法和加法函数

C++、JsonCpp、libcurl 和 UTF-8 问题

c++ - 如何绘制非客户区?

cuda - OpenCL 和 CUDA 中的持久线程

opengl - 如何使用 OpenGL 将 OpenCL 计算的像素绘制到屏幕上?

c++ - 递归函数的不同输出

ios - Firebase 的新手和 swift。无法将 Firebase 连接到 Xcode