(void **)&x 和 (void *)x 有什么区别?下面是一些代码,请帮忙解决。
(注意:本文中的 & 是 HTML 中 & 符号的转义字符,实际使用时应该将 & 替换为 & 符号)
我只想知道它们之间的区别。
cudaMalloc()函数的第一个参数是指向分配对象后必须指向的指针变量的地址。指针变量的地址应转换为(void **),因为该函数期望通用指针值;内存分配函数是通用函数,不限于任何特定类型的对象。此地址允许cudaMalloc()函数将所分配对象的地址写入指针变量中。cudaMalloc()函数的第二个参数以字节为单位给出要分配的对象的大小。使用这第二个参数与C中malloc()函数的size参数一致。
(注意:本文中的 & 是 HTML 中 & 符号的转义字符,实际使用时应该将 & 替换为 & 符号)
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()函数将所分配对象的地址写入指针变量中。cudaMalloc()函数的第二个参数以字节为单位给出要分配的对象的大小。使用这第二个参数与C中malloc()函数的size参数一致。