es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para inicializar un puntero doble con sizeof un puntero, debemos rellenar *p en lugar de ? en el fragmento de código proporcionado. Esto se debe a que *p derreferencia el puntero p, devolviendo un puntero de tamaño sizeof(int*). Por lo tanto, p[i] se le asigna la dirección de un bloque de memoria de tamaño sizeof(int*) * cols.

    El código modificado se vería así:

    int **p = malloc(sizeof *p * rows);
    
    for(size_t i = 0; i < rows; i++){
        p[i] = malloc(sizeof *p[i] * cols);
    }
    

    Aquí, sizeof *p[i] equivale a sizeof(int) ya que *p[i] derreferencia el puntero p[i], devolviendo un valor entero.

    Ten en cuenta que es importante asignar memoria tanto para los punteros externos como internos para evitar fallos de segmentación y comportamiento indefinido. Además, no olvides verificar si malloc tuvo éxito al asignar memoria.

Comments are closed.