Dynamiczna alokacja tablicy dwuwymiarowej w ANSI C




#include<stdio.h>
#include<stdlib.h>
#include<math.h>

double **matrix=NULL;

void free_matrix(int x)
{
  int i;
  if(matrix)
  {
    for(i=0;i<x;i++)
      if(matrix[i])
        free(matrix[i]);
    free(matrix);
    matrix=NULL;
  }
}

int alloc_matrix(int x,int y)
{
  int i;
  if(!(matrix=(double**)malloc(y*sizeof(double))))
    return(1);
  for(i=0;i<y;i++)
   if(!(matrix[i]=(double*)malloc(x*sizeof(double))))
     return(2);
  return(0);
}

int main(int argc,char *argv[])
{
  int i;
  
  for(i=0;i<100000;i++)
  {
    free_matrix(5);
    alloc_matrix(5,10);

    matrix[0][0]=1.23;
    matrix[4][9]=2.34;
    matrix[2][2]=3.45;
    matrix[2][7]=4.56;
    matrix[1][8]=5.67;
    matrix[3][1]=6.78;

    fprintf(stderr,"%g\n",matrix[0][0]);
    fprintf(stderr,"%g\n",matrix[4][9]);
    fprintf(stderr,"%g\n",matrix[2][2]);
    fprintf(stderr,"%g\n",matrix[2][7]);
    fprintf(stderr,"%g\n",matrix[1][8]);
    fprintf(stderr,"%g\n",matrix[3][1]);
    fprintf(stderr,"\n");
  }
  
  return(0);
}


Ostatnia modyfikacja: 22 grudnia 2015 r.


skalgo, 2014

http://www.skalgo.5v.pl