Olá, estou com um problema que talvez possam me ajudar. Fiz dois programas em C (prg1 e prg2). Em ambos, crio um array de tamanho (Nlinhas*Mcolunas) e dois ponteiros. O tamanho do array (linhas e colunas) é definido durante a execução dos programas. O pr1 funcionou Ok. Mas o prg2 apresentou problema "erro de paginação". Alguém sabe por quê? A única diferença é que no prg2 eu defini uma estrutura. ---> prg1: #include<stdlib.h>
#include<stdio.h>
#include<string.h>
#define ROW_SIZE 5;
#define COL_SIZE 3;
int main(void){
int nrows=ROW_SIZE;
int ncols=COL_SIZE;
int i,j;
unsigned char *pixel_array;
unsigned char **row_index;
pixel_array=malloc(nrows*ncols*sizeof(unsigned char));
row_index=malloc(nrows*sizeof(unsigned char));
for(i=0;i<nrows;i++)
row_index[i]=pixel_array+i*ncols;
for(i=0;i<nrows;i++)
for(j=0;j<ncols;j++)
row_index[i][j]=0;
printf("\n");
for(i=0;i<nrows;i++){
for(j=0;j<ncols;j++){
printf("%d",row_index[i][j]);
}
printf("\n");
}
return EXIT_SUCCESS;
}
---> prg2:
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
typedef struct{
unsigned int nrows;
unsigned int ncols;
unsigned char *buffer;
unsigned char **pixel;
}pixel_array_t;
#define ROW_SIZE 3;
#define COL_SIZE 2;
int main(void){
pixel_array_t x;
int i,j;
x.nrows=ROW_SIZE;
x.ncols=COL_SIZE;
x.buffer=malloc(x.nrows*x.ncols*sizeof(unsigned char));
x.pixel=malloc(x.nrows*sizeof(unsigned char));
for(i=0;i<x.nrows;i++)
x.pixel[i]=x.buffer+i*x.ncols;
for(i=0;i<x.nrows;i++)
for(j=0;j<x.ncols;j++)
x.pixel[i][j]=0;
for(i=0;i<x.nrows;i++){
for(j=0;x.ncols;j++){
printf("%d",x.pixel[i][j]);
}
printf("\n");
}
return EXIT_SUCCESS;
}