Что не так с приведением типа (void **) и device_array?

Естьэтот ответ на другой вопрос об использованииcudaMalloc((void**)&device_array, num_bytes), который используетvoid** в качестве выходного аргумента вместо передачиvoid* в качестве возвращаемого значения, как стандартmalloc.

Он критикует API NVIDIA и заявляет:

Приведение, как в (void **) & device_array, является недопустимым C и приводит к неопределенному поведению.

и за него проголосовали несколько раз (8 на данный момент), поэтому я предполагаю, что в этом есть доля правды.

Я не понимаю, что не так с кастингом там.

Что здесь неверно?В каком случае это приведет к неопределенному поведению?

Все, что я знаю, это то, что он компилируется без предупреждения и работает с предполагаемым для меня поведением. Но я не знаком с C до стандартного уровня спецификации.

Ответы на вопрос(1)

Ваш ответ на вопрос