Я искал, как создать массив указателей и скопировать его в память CUDA. Я нашел этот пост CUDA Double pointer memory copy но следующую строку в принятом ответеАдрес двойного указателя на void **
int ** devicePointersStoredInDeviceMemory;
cudaMalloc((void**)&devicePointersStoredInDeviceMemory, sizeof(int*)*N);
это подслушивание меня немного. В чем смысл передачи адреса двойного указателя и отбрасывания его на void**
? Не было бы &devicePointerStoredInDeviceMemory
так же, как int***
, так зачем его отличать void**
вместо void***
?
Это работает, но я не понимаю, почему.
Примечание: это неопределенное поведение в стандарте C++, но Windows API, опирается на него. –