template <typename T, std::size_t N>
void gpu_load(T (&data)[N])
{
cudaMalloc((void**)data, N*sizeof(T));
}
我称之为:
float data[2];
gpu_load(data);
但它不起作用。我认为它必须与&amp;并指出......
答案 0 :(得分:1)
您不能只将指针转换为指向指针的指针。数据类型为T*
,但cudaMalloc需要void **
。
试试这个:
cudaMalloc(static_cast<void**>(&d), N*sizeof(T));
注意新的&符号。
编辑:添加了评论中建议的静态演员。