| TIP: Click on subject to list as thread! | ANSI |
| echo: | |
|---|---|
| to: | |
| from: | |
| date: | |
| subject: | Dynamic Structs? |
Here's the header from MDALLOC.C in SNIPPETS. Drop it in and go... ----[ Mdalloc.C ]---- /* +++Date last modified: 05-Jul-1997 */ /* Written by Blair Haukedal 91/09 and placed in the public domain */ /* mdalloc - a multi dimensional array allocator * mdfree - a companion function to mdalloc for freeing storage * synopsis: * void *mdalloc(int ndim, int width, ...); * where: ndim: number of array dimensions * width: size of elements in array * variable args are dimensions of array * returns: n-way indirect pointer to allocated storage * or NULL if insufficient storage * * void mdfree(void *p, ndim); * where: p: pointer to storage obtained by mdalloc * ndim: number of dimensions used in mdalloc * * example: * int ***tip; * tip = mdalloc(3, sizeof(int), 2, 3, 4); * tip will be a triple indirect pointer to a 3 dimensional array * tip[0][0][0] refers to the first int in a contiguous area of * storage that is 2*3*4*sizeof(int) bytes long * tip[0][0] is the address of the first int * memset can be used to initialize array elements as follows: * memset(tip[0][0], 0, 2*3*4*sizeof(int)); * mdfree is used to free storage obtained with mdalloc: * mdfree(tip, 3) * * notes: * - must be compiled with appropriate memory model * - memory is allocated for each dimension for indirect pointers * eg. 3x4x5 array of longs * (assuming 4 byte longs, small mem model) * p = mdalloc(3, sizeof(long), 3, 4, 5) - bytes * 3 pointers allocated for 1st dimension - 6 * 3x4 pointers allocated for 2nd dimension - 24 * 3x4x5 longs allocated for array elements - 240 * total of 270 bytes allocated * - if insufficient memory, nothing will be allocated. * ie. intermediate pointer arrays that were successfully * allocated will be freed. * - the intent of mdalloc is to facilitate dynamic array creation, * it will use more memory than statically declared arrays, and * the required dereferencing will be slower than the use of * statically declared arrays. * - this function assumes that sizeof(char) == 1. */ --- QM v1.00* Origin: MicroFirm : Down to the C in chips (1:106/2000.6) SEEN-BY: 396/1 622/419 632/371 633/260 267 270 371 634/397 635/506 728 810 SEEN-BY: 639/252 670/213 218 @PATH: 30883/6 106/2000 396/1 633/260 635/506 728 633/267 |
|
| SOURCE: echomail via fidonet.ozzmosis.com | |
Email questions or comments to sysop@ipingthereforeiam.com
All parts of this website painstakingly hand-crafted in the U.S.A.!
IPTIA BBS/MUD/Terminal/Game Server List, © 2025 IPTIA Consulting™.