双指针地址强制转换为void**
Address of double pointer cast to void**
我正在搜索如何创建指针数组并将其复制到CUDA内存。我发现这篇文章CUDA双指针内存副本,但以下行在接受的答案
int ** devicePointersStoredInDeviceMemory;
cudaMalloc( (void**)&devicePointersStoredInDeviceMemory, sizeof(int*)*N);
让我有点烦。传递双指针的地址并将其强制转换为void**
的意义是什么?&devicePointerStoredInDeviceMemory
和int***
不是一样的吗?为什么把它转换成void**
而不是void***
呢?
传递双指针的地址并将其强制转换为void**是什么意思?devicepointerstoredindevicemmemory不会与int***相同,所以为什么将其强制转换为void**而不是void***?
cudaMalloc
函数的第一个参数是void **
,所以如果我们要调用cudaMalloc
,这就是我们需要的类型。第一个形参的作用是告诉codaMalloc
将指向我们分配的内存的指针存储在哪里。
你也可以这样做:
void *j;
cudaMalloc(&j, sizeof(int*)*N); // stores result in j
int **devicePointersStoredInDeviceMemory = (int **) j;
相关文章:
- Boost buffer_cast 无法从 void* 转换为 PointerToPodType
- 将void*转换为某种类型的shared_ptr
- 如何将 void* 转换为函数指针?
- 对 C++ 中的特定标头使用 extern C 关键字是否允许从 void* 转换为 char*?
- 如何将 void 转换为 typedef void(..)(浮动)
- 无法将参数 1 从"int (__thiscall A::* *)(void)"转换为"int (__cdecl *)(void)"
- 从 'void *' 转换为 'const std::string *&' 必须具有所有中间指针 const 合格
- x = malloc(n * sizeof (int));无法将 void 转换为 int
- 错误:请求从“ void”转换为“ QString”的非量表类型
- 使用 LLVM 从 const void * 转换为模板类型时出现问题
- 如何修复错误:请求从"void"转换为非标量类型"std::vector<int>"
- void* 转换为基类并调用虚函数
- 将 void* 转换为 std::function<void()>
- 无法将参数 4 从 'void' 转换为'const char *'
- C++11 无法将 std::condition_variable::wait 从 'void' 转换为 'bool'
- 如何在 C++11 中将"const void*"转换为函数指针?
- 似乎无法在 c++ 中将 void* 转换为结构
- 将 void 转换为字节
- void * 转换为 int 语法的问题
- C++从类型“void*”转换为类型“double”无效