#include "stdlib.h" int main() { int *pInt; int **ppInt1; int **ppInt2; pInt = (int*)malloc(sizeof(int)); ppInt1 = (int**)malloc(10*sizeof(int*)); ppInt2 = (int**)malloc(10*sizeof(int*)); free(pInt); free(ppInt1); free(*ppInt2); return 0; }
Elija la declaración correcta escrita arriba del programa C.
(A) malloc() para ppInt1 y ppInt2 no es correcto. Dará un error de tiempo de compilación.
(B) free(*ppInt2) no es correcto. Dará un error de tiempo de compilación.
(C) free(*ppInt2) no es correcto. Dará error de tiempo de ejecución.
(D) No hay problema con malloc() y free(), es decir, no hay error de tiempo de compilación/ejecución.
Respuesta: (D)
Explicación: ppInt2 es puntero a puntero a int. *ppInt2 es un puntero a int. Siempre que el argumento de free() sea un puntero, no hay problema. Es por eso que B) y C) no son correctos. La asignación de ppInt1 y ppInt2 está bien según su tipo de datos. Entonces A) tampoco es correcto. La afirmación correcta es D).
Cuestionario de esta pregunta
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA