GRASS GIS 8 Programmer's Manual 8.3.2(2024)-exported
Loading...
Searching...
No Matches
dalloc.c
Go to the documentation of this file.
1/**
2 * \file dalloc.c
3 *
4 * \brief Matrix memory management functions.
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or (at
9 * your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 *
20 * \author GRASS GIS Development Team
21 *
22 * \date 2004-2006
23 */
24
25#include <stdlib.h>
26#include <grass/gis.h>
27
28/**
29 * \fn double *G_alloc_vector (size_t n)
30 *
31 * \brief Vector matrix memory allocation.
32 *
33 * Allocate a vector (array) of <b>n</b> doubles initialized to zero.
34 *
35 * \param[in] n size of vector to allocate
36 * \return double *
37 */
38
39double *G_alloc_vector(size_t n)
40{
41 return (double *)G_calloc(n, sizeof(double));
42}
43
44/**
45 * \fn double **G_alloc_matrix (int rows,int cols)
46 *
47 * \brief Matrix memory allocation.
48 *
49 * Allocate a matrix of <b>rows</b> by <b>cols</b> doubles initialized
50 * to zero.
51 *
52 * \param[in] rows number of rows in matrix
53 * \param[in] cols number of columns in matrix
54 * \return double **
55 */
56
57double **G_alloc_matrix(int rows, int cols)
58{
59 double **m;
60 int i;
61
62 m = (double **)G_calloc(rows, sizeof(double *));
63 m[0] = (double *)G_calloc((size_t)rows * cols, sizeof(double));
64 for (i = 1; i < rows; i++)
65 m[i] = m[i - 1] + cols;
66
67 return m;
68}
69
70/**
71 * \fn float *G_alloc_fvector (size_t n)
72 *
73 * \brief Floating point vector memory allocation.
74 *
75 * Allocate a vector (array) of <b>n</b> floats initialized to zero.
76 *
77 * \param[in] n size of vector to allocate
78 * \return float *
79 */
80
81float *G_alloc_fvector(size_t n)
82{
83 return (float *)G_calloc(n, sizeof(float));
84}
85
86/**
87 * \fn float **G_alloc_fmatrix (int rows, int cols)
88 *
89 * \brief Floating point matrix memory allocation.
90 *
91 * Allocate a matrix of <b>rows</b> by <b>cols</b> floats initialized
92 * to zero.
93 *
94 * \param[in] rows number of rows in matrix
95 * \param[in] cols number of columns in matrix
96 * \return float **
97 */
98
99float **G_alloc_fmatrix(int rows, int cols)
100{
101 float **m;
102 int i;
103
104 m = (float **)G_calloc(rows, sizeof(float *));
105 m[0] = (float *)G_calloc((size_t)rows * cols, sizeof(float));
106 for (i = 1; i < rows; i++)
107 m[i] = m[i - 1] + cols;
108
109 return m;
110}
111
112/**
113 * \fn void G_free_vector (double *v)
114 *
115 * \brief Vector memory deallocation.
116 *
117 * Deallocate a vector (array) of doubles.
118 *
119 * \param[in,out] v vector to free
120 * \return void
121 */
122
123void G_free_vector(double *v)
124{
125 G_free(v);
126 v = NULL;
127
128 return;
129}
130
131/**
132 * \fn void G_free_fvector (float *v)
133 *
134 * \brief Vector memory deallocation.
135 *
136 * Deallocate a vector (array) of floats.
137 *
138 * \param[in,out] v vector to free
139 * \return void
140 */
141
142void G_free_fvector(float *v)
143{
144 G_free(v);
145 v = NULL;
146
147 return;
148}
149
150/**
151 * \fn void G_free_matrix (double **m)
152 *
153 * \brief Matrix memory deallocation.
154 *
155 * Deallocate a matrix of doubles.
156 *
157 * \param[in,out] m matrix to free
158 * \return void
159 */
160
161void G_free_matrix(double **m)
162{
163 G_free(m[0]);
164 G_free(m);
165 m = NULL;
166
167 return;
168}
169
170/**
171 * \fn void G_free_fmatrix (float **m)
172 *
173 * \brief Floating point matrix memory deallocation.
174 *
175 * Deallocate a matrix of floats.
176 *
177 * \param[in,out] m matrix to free
178 * \return void
179 */
180
181void G_free_fmatrix(float **m)
182{
183 G_free(m[0]);
184 G_free(m);
185 m = NULL;
186
187 return;
188}
void G_free(void *buf)
Free allocated memory.
Definition alloc.c:150
#define NULL
Definition ccmath.h:32
void G_free_fmatrix(float **m)
Floating point matrix memory deallocation.
Definition dalloc.c:181
float * G_alloc_fvector(size_t n)
Floating point vector memory allocation.
Definition dalloc.c:81
float ** G_alloc_fmatrix(int rows, int cols)
Floating point matrix memory allocation.
Definition dalloc.c:99
void G_free_vector(double *v)
Vector memory deallocation.
Definition dalloc.c:123
double ** G_alloc_matrix(int rows, int cols)
Matrix memory allocation.
Definition dalloc.c:57
void G_free_fvector(float *v)
Vector memory deallocation.
Definition dalloc.c:142
void G_free_matrix(double **m)
Matrix memory deallocation.
Definition dalloc.c:161
double * G_alloc_vector(size_t n)
Vector matrix memory allocation.
Definition dalloc.c:39