Существует этот ответ по другому вопросу об использовании cudaMalloc((void**)&device_array, num_bytes)
, который использует void**
как выходной аргумент вместо передачи void*
в качестве возвращаемого значения как стандартный malloc
.
Он критикует API NVIDIA и заявляет:
Кастинг, как и в (void **) и device_array, недействителен C и приводит к undefined.
и был увеличен несколько раз (8 на данный момент), поэтому я предполагаю, что в нем есть какая-то правда.
Я не понимаю, что случилось с кастингом.
- Что здесь недействительно?
- В каком случае это приведет к поведению undefined?
Все, что я знаю, это то, что он компилируется без предупреждения и работает с предполагаемым поведением для меня. Но я не осведомлен с C до стандартного уровня спецификации.