Home Accessibility Courses Twitter The Mouth Facebook Resources Site Map About Us Contact
 
Python and Tcl - public course schedule [here]
Private courses on your site - see [here]
Please ask about maintenance training for 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
C207 - C and C based languages - Pointers and references
  [4560] Variables, Pointers and References - C and C++ - (2015-10-29)
  [3399] From fish, loaves and apples to money, plastic cards and BACS (Perl references explained) - (2011-08-20)
  [3386] Adding the pieces together to make a complete language - C - (2011-08-11)
  [3242] How to return 2 values from a function (C++ and C) - more uses of pointers - (2011-04-10)
  [3238] Bradshaw, Ben and Bill. And some C and C++ pointers and references too. - (2011-04-09)
  [3121] New year, new C Course - (2011-01-05)
  [3004] Increment operators for counting - Perl, PHP, C and others - (2010-10-18)
  [2670] Pointers to Pointers to Pointers - what is the point? - (2010-03-10)
  [2572] The what and why of C pointers - (2010-01-13)
  [2005] Variables and pointers and references - C and C++ - (2009-01-23)
  [1497] Training Season Starts again! - (2008-01-07)
  [1478] Some new C programming examples - files, structs, unions etc - (2007-12-19)
  [1155] Pointers in C - (2007-04-19)

C212 - C and C based languages - Memory Management
  [4635] Encapsulating logic in functions and structs - the C approach to Object Oriented techniques - (2016-01-30)
  [4634] Regression testing - via a very short C testing framework - (2016-01-29)
  [4340] Simple C structs - building up to full, dynamic example - (2014-12-03)
  [3416] Storing Tcl source code encoded, and running via your own C program - (2011-09-02)
  [3144] Setting up arrays in C - fixed size at compile time, or dynamic - (2011-01-24)
  [3118] Arrays of arrays - or 2D arrays. How to program tables. - (2011-01-02)
  [2848] C course - final course example puts it all together - (2010-07-02)
  [2669] Efficient use of dynamic memory - C and realloc - (2010-03-10)
  [1845] Passing a table from Lua into C - (2008-10-18)
  [1670] Dynamic Memory Allocation in C - (2008-06-09)
  [1589] Dynamic Memory Allocation in C - calloc, realloc - (2008-03-22)
  [1581] What is an lvalue? (Perl, C) - (2008-03-18)


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., 2019: 404 The Spa • Melksham, Wiltshire • United Kingdom • SN12 6QL
PH: 01225 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: Sat May 27 16:49:10 2017 • BUILD SYSTEM: WomanWithCat