C++ 初学者OpenCL代码中的内存分配问题

C++ 初学者OpenCL代码中的内存分配问题,c++,opencl,C++,Opencl,我正在尝试使用Intel CPU和集成Iris图形运行初级OpenCL测试。我使用标准的g++和-frameworkopencl作为编译开关编译代码。我试着通过运行gdb和在线参考一些指南来清理代码。但是,我仍然看到一个错误,我认为这与内存分配有关。我已经在下面粘贴了我的全部代码;如果你发现有什么明显的错误,请帮忙 为冗长的评论道歉。如果我也有一些错误的假设,请告诉我:) 这是很常见的错误 int* input_data = new int(N); 应该是 int* input_data =

我正在尝试使用Intel CPU和集成Iris图形运行初级OpenCL测试。我使用标准的g++和
-frameworkopencl
作为编译开关编译代码。我试着通过运行gdb和在线参考一些指南来清理代码。但是,我仍然看到一个错误,我认为这与内存分配有关。我已经在下面粘贴了我的全部代码;如果你发现有什么明显的错误,请帮忙

为冗长的评论道歉。如果我也有一些错误的假设,请告诉我:)

这是很常见的错误

int* input_data = new int(N);
应该是

int* input_data = new int[N];

您的版本分配一个
int
并将其初始化为
N
。要分配
N
整数,需要方括号。

谢谢!有点尴尬,我错过了!我已经纠正了它,但我看到了类似的失败。这些错误并不一致。在某些情况下,它会继续到程序的末尾,在断言时失败。在某些情况下,它失败如下:opencl_basic.app(1475,0x11bbebdc0)malloc:释放对象0x7ff724704688的校验和不正确:可能在释放后修改。损坏的值:0x264000348 opencl_basic.app(1475,0x11bbebdc0)malloc:**在malloc_error_break中设置断点以调试生成:**[all]中止陷阱:6@pigbabez好的,第二个错误是,因为您使用的是
data\u size
整数,所以需要分配
data\u size
integers
int*input\u data=new int[data\u size];int*输出数据=新的int[数据大小]。或者,您的循环搞错了,您只想将
N
整数
用于(int i=0;i
。不管怎样,你都必须始终如一。啊,你是对的。谢谢你指出这一点。我已经解决了这个问题,但错误依然存在,我想这与OpenCL缓冲区分配有关。@pigbabez也许我对此一无所知。你是对的!对前面的评论表示歉意:我在assert循环中也使用了data_size而不是N。把它改成N修正了!非常感谢。
int* input_data = new int(N);
int* input_data = new int[N];