双指针的地址转换为void **

时间:2016-11-14 21:40:11

标签: c++ pointers cuda

我正在搜索如何创建指针数组并将其复制到CUDA内存。我发现了这篇帖子CUDA Double pointer memory copy,但接受了答案中的以下一行

int ** devicePointersStoredInDeviceMemory;
cudaMalloc( (void**)&devicePointersStoredInDeviceMemory, sizeof(int*)*N);

有点烦我。 传递双指针地址并将其转换为void**的含义是什么? 不会&devicePointerStoredInDeviceMemoryint***相同,那么为什么要将其投放到void**而不是void***

它有效,但我不明白为什么。

1 个答案:

答案 0 :(得分:1)

  

传递双指针的地址并将其转换为void **的含义是什么?不会& devicePointerStoredInDeviceMemory与int ***相同,那么为什么要将它转换为void **而不是void ***?

"@angular/common": "2.0.0", "@angular/compiler": "2.0.0", "@angular/core": "2.0.0", "@angular/forms": "2.0.0", "@angular/http": "2.0.0", "@angular/material": "^2.0.0-alpha.9-3", "@angular/platform-browser": "2.0.0", "@angular/platform-browser-dynamic": "2.0.0", "@angular/router": "3.0.0", "rxjs": "5.0.0-beta.12" 函数将cudaMalloc作为其第一个参数,因此如果我们要调用void **,那就是我们需要的类型。第一个参数的目的是告诉cudaMalloc将指针存储到我们分配的内存的位置。

你也可以这样做:

codaMalloc