Was ist los mit Casting wie (void **) & device_array?

Es gibtdiese Antwort auf eine andere Frage zur Verwendung voncudaMalloc((void**)&device_array, num_bytes), das @ verwendvoid** als Ausgabeargument anstatt ein @ zu übergebvoid* als Rückgabewert wie der Standardmalloc.

Es kritisiert die NVIDIA-API und gibt an:

Casting ist, wie in (void **) & device_array, ungültiges C und führt zu undefiniertem Verhalten.

und wurde mehrmals upvotet (bis jetzt 8), daher gehe ich davon aus, dass etwas Wahres dran ist.

Ich verstehe nicht, was mit dem Casting dort falsch ist.

Was ist hier ungültiges C?In welchem Fall würde dies zu undefiniertem Verhalten führen?

lles was ich weiß ist, dass es ohne Vorwarnung kompiliert und mit dem für mich vorgesehenen Verhalten läuft. Ich bin jedoch nicht mit C bis zur Standardspezifikation vertraut.