(void **)&x 和 (void *)x 有什么区别?我会给你一些代码,请帮助我。
float *xd;
int size=width*width*size(float);
cudaMalloc((void **)&x,size); 1
cudaMalloc((void *)x,size); 2
cudaMalloc(&x,size); 3
cudaMalloc(*x,size); 4
cudaFree(xd);
我只是想知道区别。
cudaMalloc() 函数的第一个参数是分配后必须指向分配对象的指针变量的地址。指针变量的地址应该转换为 (void **) 因为函数需要一个通用指针值;内存分配函数是一个通用函数,不限于任何特定类型的对象。该地址允许 cudaMalloc() 函数将分配对象的地址写入指针变量。3 cudaMalloc() 函数的第二个参数给出了要分配的对象的大小,以字节为单位。这第二个参数的用法与 C malloc() 函数的 size 参数一致。