guess this is what you want to do
Code:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <math.h>
#include <string.h>
#include <stdio.h>
void free_2d(double **d, int nx, int ny);
void MC(double ***ptrBeadArray) // you have to pass the array dimensions
{
int i;
double **ptrBeadArrayOld = NULL;
ptrBeadArrayOld = (double **)malloc(2 * sizeof(double *));
for (i = 0; i< 2; i++)
ptrBeadArrayOld[i] = (double *)malloc(3 * sizeof(double));
ptrBeadArrayOld[0][0] = 7.0;
ptrBeadArrayOld[0][1] = 7.0;
ptrBeadArrayOld[0][2] = 7.0;
double **oldPtr = *ptrBeadArray;
free_2d(oldPtr, 2,3 ); // you don't know the dimensions here
*ptrBeadArray = ptrBeadArrayOld; // need to dereference
}
void free_2d(double **d, int nx, int ny)
{
int x;
for (x = 0; x < nx; x++)
{
free(d[x]);
}
free(d);
}
int main(void)
{
int i;
double **ptrBeadArray = NULL;
ptrBeadArray = (double **)malloc(2 * sizeof(double *));
for (i = 0; i< 2; i++)
ptrBeadArray[i] = (double *)malloc(3 * sizeof(double));
ptrBeadArray[0][0] = 1.0;
ptrBeadArray[0][1] = 2.0;
ptrBeadArray[0][2] = 3.0;
printf("%f\n",ptrBeadArray[0][0]);
printf("%f\n",ptrBeadArray[0][1]);
printf("%f\n",ptrBeadArray[0][2]);
MC(&ptrBeadArray);
printf("%f\n",ptrBeadArray[0][0]);
printf("%f\n",ptrBeadArray[0][1]);
printf("%f\n",ptrBeadArray[0][2]);
free_2d(ptrBeadArray, 2, 3);
return(0);
}
Kurt