struct pixel **read_pixel_array(FILE *image, int pixel_array_offset, int width, int height) {
    
    // allocate space for m struct pixel * values
    struct pixel **ptr = (struct pixel**) malloc((sizeof(struct pixel*)) * height);

    for (int i = 0; i < height; i++){
        ptr[i] = malloc(sizeof(int)* width);
        fseek(image, pixel_array_offset, SEEK_SET);
        fread(ptr[i], 3, width, image);
    }

    return  ptr[0];
    }
the function is supposed to do the following but it does not.

First, allocate space for m `struct pixel *` values, where m is the  *    height of the image. 
 * 2. For each pointer you just allocated, initialize it to point to  * heap-allocated space for an entire row of pixel data.
 * 3. Use the given file and pixel_array_offset to initialize the actual 
 *    struct pixel values. Assume that `sizeof(struct pixel) == 3`.
 * 4. Return the address of the first `struct pixel *` you initialized