¿Qué hay de malo en emitir como (void **) y device_array?
Ahi estaesta respuesta sobre otra pregunta sobre el uso decudaMalloc((void**)&device_array, num_bytes)
, que utilizavoid**
como argumento de salida en lugar de pasar unvoid*
como valor de retorno como el estándarmalloc
.
Critica la API de NVIDIA y afirma:
La transmisión, como en (void **) y device_array, no es válida C y produce un comportamiento indefinido.
y ha sido votado varias veces (8 a partir de ahora), así que supongo que hay algo de verdad en ello.
No entiendo qué hay de malo en lanzar allí.
¿Qué es inválido C aquí?¿En qué caso esto conduciría a un comportamiento indefinido?Todo lo que sé es que se compila sin previo aviso y se ejecuta con el comportamiento previsto para mí. Pero no conozco C hasta el nivel de especificación estándar.