arrayfire、指针和 C++
arrayfire, pointers, and c++
我一直在尝试按程序生成一个 arrayfire 数组。
过去处理其他对象时,我可以这样:
className * listName = (className*)malloc(numOfObjects*sizeOf(className))
或
className ** listName = (className**)malloc(numOfObjects*sizeOf(className*))
然后使用 for 循环分配列表中的每个事物,并在我完成后删除它们。
但这不适用于 arrayfire。
我试过
af::array *Kernels;
Kernels = (af::array*)malloc(Count*sizeof(af::array));
for(int i = 0; i < Count; i++) {
Kernels[i] = af::range(i);
}
稍后我打电话给:
free Kernels
此代码可以编译,但当我 运行 它时会崩溃。
这是我在崩溃时得到的:
terminate called after throwing an instance of 'af::exception'
what(): ArrayFire Exception (Function does not support this data type:204):
In function af_err af_release_array(af_array)
In file src/api/c/array.cpp:194
Invalid type for argument 0
In function af::array& af::array::operator=(const af::array&)
In file src/api/cpp/array.cpp:771
Aborted (core dumped)
我正在寻找正确的语法来完成我想做的事情,或者寻找替代方法。
我在谷歌上搜索了很多,但没有找到我要找的东西。
谢谢。
看来我终于找到了解决办法。似乎使用这个: std::vector<af::array> Kernels;
得到了我想要的所有功能。事实证明,使用双指针可以编译,但 arrayfire 中的函数并不是为处理 af::array* 对象指针而构建的。
我一直在尝试按程序生成一个 arrayfire 数组。 过去处理其他对象时,我可以这样:
className * listName = (className*)malloc(numOfObjects*sizeOf(className))
或
className ** listName = (className**)malloc(numOfObjects*sizeOf(className*))
然后使用 for 循环分配列表中的每个事物,并在我完成后删除它们。
但这不适用于 arrayfire。 我试过
af::array *Kernels;
Kernels = (af::array*)malloc(Count*sizeof(af::array));
for(int i = 0; i < Count; i++) {
Kernels[i] = af::range(i);
}
稍后我打电话给:
free Kernels
此代码可以编译,但当我 运行 它时会崩溃。 这是我在崩溃时得到的:
terminate called after throwing an instance of 'af::exception' what(): ArrayFire Exception (Function does not support this data type:204): In function af_err af_release_array(af_array) In file src/api/c/array.cpp:194 Invalid type for argument 0
In function af::array& af::array::operator=(const af::array&) In file src/api/cpp/array.cpp:771 Aborted (core dumped)
我正在寻找正确的语法来完成我想做的事情,或者寻找替代方法。 我在谷歌上搜索了很多,但没有找到我要找的东西。
谢谢。
看来我终于找到了解决办法。似乎使用这个: std::vector<af::array> Kernels;
得到了我想要的所有功能。事实证明,使用双指针可以编译,但 arrayfire 中的函数并不是为处理 af::array* 对象指针而构建的。