gridmem.c

来自「这是一个关于最小二乘法相位积分展开的实现程序」· C语言 代码 · 共 41 行

C
41
字号
/*
 * gridmem.c - dynamic memory management functions
 *             for multigrid phase unwrapping 
 */
#include <stdio.h>
#include <math.h>
#include "gridmem.h"

static int sizes[NUM_TYPES][MAX_ARRAYS];
static int num[NUM_TYPES];
static float *arrays[NUM_TYPES][MAX_ARRAYS];

/* allocate array: if already allocated, return pointer to it */
float *Allocate(int w, int h, ArrayType type)
{
  int size = w*h, i, j, k;
  k = (int) type;
  for (i=0; i<num[k]; i++) {
    if (sizes[k][i]==size) 
      return arrays[k][i];
  }
  sizes[k][num[k]] = size;
  arrays[k][num[k]] = (float *) malloc(size*sizeof(float));
  if (!arrays[k][num[k]]) {
    printf("Error: cannot allocate memory (%d bytes)\n", size*4);
    return 0;  /* error */
  }
  return arrays[k][num[k]++];
}

/* free all allocated arrays */
void FreeAll()
{ 
  int i, j;
  for (j=0; j<NUM_TYPES; j++) {
    for (i=0; i<num[j]; i++) {
      free(arrays[j][i]);
    }
  }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?