GRASS GIS 8 Programmer's Manual 8.3.2(2024)-exported
Loading...
Searching...
No Matches
alloc.c File Reference

GIS Library - Memory allocation routines. More...

#include <stdlib.h>
#include <grass/gis.h>
#include <grass/glocale.h>
Include dependency graph for alloc.c:

Go to the source code of this file.

Functions

void * G__malloc (const char *file, int line, size_t n)
 Memory allocation.
 
void * G__calloc (const char *file, int line, size_t m, size_t n)
 Memory allocation.
 
void * G__realloc (const char *file, int line, void *buf, size_t n)
 Memory reallocation.
 
void G_free (void *buf)
 Free allocated memory.
 
void * G_incr_void_ptr (const void *ptr, size_t size)
 Advance void pointer.
 

Detailed Description

GIS Library - Memory allocation routines.

(C) 1999-2009 by the GRASS Development Team

This program is free software under the GNU General Public License (>=v2). Read the file COPYING that comes with GRASS for details.

Author
Original author CERL

Definition in file alloc.c.

Function Documentation

◆ G__calloc()

void * G__calloc ( const char *  file,
int  line,
size_t  m,
size_t  n 
)

Memory allocation.

Allocates a properly aligned block of memory n*m bytes in length, initializes the allocated memory to zero, and returns a pointer to the allocated block of memory.

Dies with error message on memory allocation fail.

Note: Allocating memory for reading and writing raster maps is discussed in Allocating_Raster_I_O_Buffers.

Parameters
filefine name
lineline number
melement size
nnumber of elements

Definition at line 73 of file alloc.c.

References file, G_fatal_error(), G_get_window(), and G_important_message().

◆ G__malloc()

void * G__malloc ( const char *  file,
int  line,
size_t  n 
)

Memory allocation.

Allocates a block of memory at least n bytes which is aligned properly for all data types. A pointer to the aligned block is returned.

Dies with error message on memory allocation fail.

Parameters
filefile name
lineline number
nnumber of elements

Definition at line 32 of file alloc.c.

References file, G_fatal_error(), G_get_window(), and G_important_message().

◆ G__realloc()

void * G__realloc ( const char *  file,
int  line,
void *  buf,
size_t  n 
)

Memory reallocation.

Changes the size of a previously allocated block of memory at ptr and returns a pointer to the new block of memory. The size may be larger or smaller than the original size. If the original block cannot be extended "in place", then a new block is allocated and the original block copied to the new block.

Note: If buf is NULL, then this routine simply allocates a block of n bytes else buf must point to memory that has been dynamically allocated by G_malloc(), G_calloc(), G_realloc(), malloc(3), alloc(3), or realloc(3).. This routine works around broken realloc() routines, which do not handle a NULL buf.

Parameters
filefile name
lineline number
[in,out]bufbuffer holding original data
[in]narray size

Definition at line 119 of file alloc.c.

References file, G_fatal_error(), G_get_window(), and G_important_message().

◆ G_free()

void G_free ( void *  buf)

Free allocated memory.

Parameters
[in,out]bufbuffer holding original data

Definition at line 150 of file alloc.c.

Referenced by AS_class_equiprob(), Cairo_end_raster(), cairo_read_ppm(), Cairo_Text(), Cairo_text_box(), cairo_write_ppm(), COM_Set_encoding(), err(), font_init_freetype(), free_datum_list(), free_ellps_list(), free_fontcap(), free_slice_buff(), free_vol_buff(), free_volfile_buffs(), G__read_Cell_head(), G__usage_xml(), G__wps_print_process_description(), G_bz2_compress(), G_free_fmatrix(), G_free_fvector(), G_free_ilist(), G_free_imatrix(), G_free_ivector(), G_free_key_value(), G_free_list(), G_free_matrix(), G_free_tokens(), G_free_vector(), G_get_available_mapsets(), G_get_projsrid(), G_get_projwkt(), G_init_ilist(), G_list(), G_ls(), G_lz4_compress(), G_math_egvorder(), G_math_free_spmatrix(), G_math_free_spvector(), G_math_solver_lu(), G_math_solver_sparse_gs(), G_math_solver_sparse_jacobi(), G_matrix_eigen_sort(), G_matrix_free(), G_matrix_LU_solve(), G_plot_area(), G_putenv(), G_rc_path(), G_read_compressed(), G_set_key_value(), G_set_program_name(), G_vector_free(), G_write_compressed(), G_zstd_compress(), gk_free_key(), gk_make_framesfromkeys(), gk_make_linear_framesfromkeys(), gp_free_site(), gp_free_sitemem(), Gp_load_sites(), GPJ__get_ellipsoid_params(), GPJ_free_datum(), GPJ_free_datum_transform(), GPJ_free_ellps(), GPJ_grass_to_osr(), GPJ_init_transform(), GPJ_osr_to_grass(), GPJ_set_csv_loc(), GPJ_transform_array(), GS_coordpair_repeats(), gs_free_surf(), Gs_get_cat_label(), gs_init_normbuff(), Gs_loadmap_as_bitmap(), Gs_loadmap_as_char(), Gs_loadmap_as_short(), gs_malloc_lookup(), Gs_pack_colors(), Gs_pack_colors_float(), gs_set_att_src(), GS_write_ppm(), GS_write_tif(), gsd_put_legend(), gsd_wall(), gsds_free_datah(), gv_free_vect(), gv_free_vectmem(), Gv_load_vect(), gvd_vect(), gvl_file_free_datah(), gvl_file_set_mode(), gvl_free_vol(), gvl_isosurf_calc(), GVL_isosurf_del(), gvl_isosurf_freemem(), Gvl_load_colors_data(), GVL_slice_del(), gvl_slice_freemem(), Gvl_unload_colors_data(), html_polygon(), HTML_Text(), IL_interp_segments_2d(), IL_interp_segments_2d_parallel(), IL_resample_interp_segments_2d(), kdtree_destroy(), N_assemble_les_2d_param(), N_assemble_les_3d_param(), N_free_array_2d(), N_free_array_3d(), N_free_geom_data(), N_free_gradient_2d(), N_free_gradient_3d(), N_free_gradient_field_2d(), N_free_gradient_field_3d(), N_free_gradient_neighbours_2d(), N_free_gradient_neighbours_3d(), N_free_gradient_neighbours_x(), N_free_gradient_neighbours_y(), N_free_gradient_neighbours_z(), N_free_gwflow_data2d(), N_free_gwflow_data3d(), N_free_les(), N_free_solute_transport_data2d(), N_free_solute_transport_data3d(), N_gwflow_2d_calc_water_budget(), N_gwflow_3d_calc_water_budget(), N_init_geom_data_2d(), Nviz_delete_scalebar(), Nviz_destroy_data(), Nviz_destroy_render_window(), Nviz_draw_all_site(), Nviz_draw_all_surf(), Nviz_draw_all_vol(), Nviz_get_exag(), Nviz_new_fringe(), Nviz_new_map_obj(), Nviz_set_arrow(), Nviz_set_focus_map(), Nviz_set_fringe(), Nviz_set_scalebar(), path_free(), pj_do_transform(), pj_get_kv(), pj_get_string(), PNG_Graph_close(), read_pgm(), read_png(), Segment_close(), Segment_release(), set_proj_share(), write_pgm(), and write_png().

◆ G_incr_void_ptr()

void * G_incr_void_ptr ( const void *  ptr,
size_t  size 
)

Advance void pointer.

Advances void pointer by size bytes. Returns new pointer value.

Useful in raster row processing loops, substitutes

CELL *cell;
cell += n;

Now

rast = G_incr_void_ptr(rast, Rast_cell_size(data_type))
void * G_incr_void_ptr(const void *ptr, size_t size)
Advance void pointer.
Definition alloc.c:187

(where rast is void* and data_type is RASTER_MAP_TYPE can be used instead of rast++.)

Very useful to generalize the row processing - loop i.e.

void * buf_ptr += Rast_cell_size(data_type)
Parameters
ptrpointer
sizebuffer size
Returns
pointer to the data

Definition at line 187 of file alloc.c.

Referenced by N_read_rast_to_array_2d(), and P_Aux_to_Raster().