📄 myalloc.c
字号:
/* Copyright notice: radarFDTD - A free 3D-FDTD simulation for EM-waves with GPML-ABCs ;-) Copyright (C) 2000 Carsten Aulbert ( I used the following program as a 'manual', so in my opinion this needs to be quoted: ToyFDTD, version 1.02 The if-I-can-do-it-you-can-do-it FDTD! Copyright (C) 1998,1999 Laurie E. Miller, Paul Hayes, Matthew O'Keefe ) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA*/PRECISION ***MyAllocPrecision(int dimensionX, int dimensionY, int dimensionZ, PRECISION value, int *storage){ PRECISION ***returnArray; int i,j,k; *storage += sizeof(PRECISION) * dimensionX * dimensionY * dimensionZ; *storage += sizeof(PRECISION *) * dimensionX * dimensionY; *storage += sizeof(PRECISION **) * dimensionX; returnArray = (PRECISION ***) malloc(dimensionX * sizeof(PRECISION **)); if (returnArray == NULL) { fprintf(stdout, "Sorry, but you don't have enough memory installed!"); exit(1); } for(i=0; i<dimensionX; i++) { returnArray[i] = (PRECISION **) malloc(dimensionY * sizeof(PRECISION *)); if (returnArray[i] == NULL) { fprintf(stdout, "Sorry, but you don't have enough memory installed!"); exit(1); } for(j=0; j<dimensionY; j++) { returnArray[i][j] = (PRECISION *) malloc(dimensionZ * sizeof(PRECISION)); if (returnArray[i][j] == NULL) { fprintf(stdout, "Sorry, but you don't have enough memory installed!"); exit(1); } for(k=0; k<dimensionZ; k++) { returnArray[i][j][k] = value; } } } return returnArray;}unsigned short int ***MyAllocShortInt(int dimensionX, int dimensionY, int dimensionZ, int *storage){ unsigned short int ***returnArray; int i,j,k; *storage += sizeof(unsigned short int) * dimensionX * dimensionY * dimensionZ; *storage += sizeof(unsigned short int *) * dimensionX * dimensionY; *storage += sizeof(unsigned short int **) * dimensionX; returnArray = (unsigned short int ***) malloc(dimensionX * sizeof(unsigned short int **)); if (returnArray == NULL) { fprintf(stdout, "Sorry, but you don't have enough memory installed!"); exit(1); } for(i=0; i<dimensionX; i++) { returnArray[i] = (unsigned short int **) malloc(dimensionY * sizeof(unsigned short int *)); if (returnArray[i] == NULL) { fprintf(stdout, "Sorry, but you don't have enough memory installed!"); exit(1); } for(j=0; j<dimensionY; j++) { returnArray[i][j] = (unsigned short int *) malloc(dimensionZ * sizeof(unsigned short int)); if (returnArray[i][j] == NULL) { fprintf(stdout, "Sorry, but you don't have enough memory installed!"); exit(1); } for(k=0; k<dimensionZ; k++) { returnArray[i][j][k] = 0.0; } } } return returnArray;}int MyFreePrecision(PRECISION ***pointer, int x, int y, int z){ int i,j; for(i=0; i<x; i++) for(j=0; j<y; j++) free(pointer[i][j]); for(i=0; i<x; i++) free(pointer[i]); free(pointer); return 0;}int MyFreeShortInt(unsigned short int ***pointer, int x, int y, int z){ int i,j; for(i=0; i<x; i++) for(j=0; j<y; j++) free(pointer[i][j]); for(i=0; i<x; i++) free(pointer[i]); free(pointer); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -