Home Accessibility Courses Twitter The Mouth Facebook Resources Site Map About Us Contact
 
For 2021 - online Python 3 training - see ((here)).

Our plans were to retire in summer 2020 and see the world, but Coronavirus has lead us into a lot of lockdown programming in Python 3 and PHP 7.
We can now offer tailored online training - small groups, real tutors - works really well for groups of 4 to 14 delegates. Anywhere in the world; course language English.

Please ask about private 'maintenance' training for Python 2, Tcl, Perl, PHP, Lua, etc.
Allocating memory dynamically in a static language like C

From last weeks' C course - a complete example showing dynamic memory allocation - reading in any file of data, lines of varying length, and packing them in neat. Source code [here].

There's an issue with reading data of unknown size into a fixed declaration language like C... allocation stack memory isn't clever either, as it makes it impractical to pass data generated in one function on to its sibling - the data's lost on return to the parent so it doesn't have it to pass to the brother or sister.Solution! - Allocate memory on the heap. You can do that for each record using calloc. But that's not going to be the solution for the array of pointers to the records as we don't know how many of those there will be. We'll use realloc which lets us allocate and then extend memory. The call's like this:

  mydata = realloc(mydata,(nread+1) * sizeof(char *));

You'll note that the ingoing pointer (set to NULL before the very first call) is also set into the return variable - that way, the C function can shift the data around if it needs to, change the pointer, and return you a new address to an extended area or it can just return the same value if it's got enough free memory starting at the location passed in. It's really neat!

I'll show you this from first principles - help you to learn it - on the course.
(written 2013-06-30, updated 2013-07-15)

 
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
C212 - C and C based languages - Memory Management
  [1497] Training Season Starts again! - (2008-01-07)
  [1581] What is an lvalue? (Perl, C) - (2008-03-18)
  [1589] Dynamic Memory Allocation in C - calloc, realloc - (2008-03-22)
  [1670] Dynamic Memory Allocation in C - (2008-06-09)
  [1845] Passing a table from Lua into C - (2008-10-18)
  [2669] Efficient use of dynamic memory - C and realloc - (2010-03-10)
  [2848] C course - final course example puts it all together - (2010-07-02)
  [3118] Arrays of arrays - or 2D arrays. How to program tables. - (2011-01-02)
  [3144] Setting up arrays in C - fixed size at compile time, or dynamic - (2011-01-24)
  [3386] Adding the pieces together to make a complete language - C - (2011-08-11)
  [3416] Storing Tcl source code encoded, and running via your own C program - (2011-09-02)
  [4340] Simple C structs - building up to full, dynamic example - (2014-12-03)
  [4634] Regression testing - via a very short C testing framework - (2016-01-29)
  [4635] Encapsulating logic in functions and structs - the C approach to Object Oriented techniques - (2016-01-30)

C207 - C and C based languages - Pointers and references
  [1155] Pointers in C - (2007-04-19)
  [1478] Some new C programming examples - files, structs, unions etc - (2007-12-19)
  [2005] Variables and pointers and references - C and C++ - (2009-01-23)
  [2572] The what and why of C pointers - (2010-01-13)
  [2670] Pointers to Pointers to Pointers - what is the point? - (2010-03-10)
  [3004] Increment operators for counting - Perl, PHP, C and others - (2010-10-18)
  [3121] New year, new C Course - (2011-01-05)
  [3238] Bradshaw, Ben and Bill. And some C and C++ pointers and references too. - (2011-04-09)
  [3242] How to return 2 values from a function (C++ and C) - more uses of pointers - (2011-04-10)
  [3399] From fish, loaves and apples to money, plastic cards and BACS (Perl references explained) - (2011-08-20)
  [4560] Variables, Pointers and References - C and C++ - (2015-10-29)


Back to
Exploring the area ... Ynys, near Harlech
Previous and next
or
Horse's mouth home
Forward to
Simple OO demonstration in C++, comparison to Python
Some other Articles
Using your own laptop on our courses - now even easier!
West Coast (of Wales) - railway and stations in pictures
Soft furnishings up a Welsh Mountain
Simple OO demonstration in C++, comparison to Python
Allocating memory dynamically in a static language like C
Exploring the area ... Ynys, near Harlech
Where are we now? On holiday!
The first Luas of the morning
Chippenham - Melksham - Trowbridge bus changes next month
New timetables from 28th July - bus routes 271 and 272
4759 posts, page by page
Link to page ... 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96 at 50 posts per page


This is a page archived from The Horse's Mouth at http://www.wellho.net/horse/ - the diary and writings of Graham Ellis. Every attempt was made to provide current information at the time the page was written, but things do move forward in our business - new software releases, price changes, new techniques. Please check back via our main site for current courses, prices, versions, etc - any mention of a price in "The Horse's Mouth" cannot be taken as an offer to supply at that price.

Link to Ezine home page (for reading).
Link to Blogging home page (to add comments).

You can Add a comment or ranking to this page

© WELL HOUSE CONSULTANTS LTD., 2021: 48 Spa Road • Melksham, Wiltshire • United Kingdom • SN12 7NY
PH: 01144 1225 708225 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho

PAGE: http://www.wellho.net/mouth/4128_All ... ike-C.html • PAGE BUILT: Sun Oct 11 16:07:41 2020 • BUILD SYSTEM: JelliaJamb