Skip to Content
Algorithms in a Nutshell
book

Algorithms in a Nutshell

by George T. Heineman, Gary Pollice, Stanley Selkow
October 2008
Intermediate to advanced
368 pages
10h 9m
English
O'Reilly Media, Inc.
Content preview from Algorithms in a Nutshell

Manual Memory Allocation

Most modern programming languages allow the programmer to allocate dynamic memory from the Heap (as opposed to the Stack) during the execution of a program. Consider the C program in Example 3-1.

Example 3-1. Sample program that allocates memory

#include <stdlib.h>
#include <string.h>
void f(char *inner) {
  char temp[11];
  strcpy (temp, "algorithms");
  int i;
  for (i=0; i<11; i++) {
    inner[i] = temp[i];
  }
}
int main (int argc, char **argv) {
  char *ar1  = malloc(132);
  char *ar2  = malloc(132);
  int i = 17, j;
  f (ar2);
  return 0;
}

When the program executes, variables that are local to a function (such as argc, and argv for main) are assigned to locations on the Execution Stack, which stores the progress of the program execution. Dynamically allocated memory (such as ar1 in main) is instead stored on the Heap, a separate region of memory available for allocation. The address of the variable determines where the memory can be found. In the example, one possible assignment of variables (on a Linux i686) is shown in Table 3-5.

Table 3-5. Addresses for symbols and variables

f variables

Addresses

main variables

Addresses

Global symbols

Addresses

f.inner

3221222728

main.argc

3221222796

&f

4195576

f.temp

3221222704

main.argv

3221222784

&main

4195648

f.i

3221222700

main.ar1

3221222776

  
  

main.ar2

3221222768

  
  

main.i

3221222764

  
  

main.j

3221222760

  
  

*main.ar1

5246992

  
  

*main.ar2

5247136

  

Note how the address values are all near one another, ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

Algorithms in a Nutshell, 2nd Edition

Algorithms in a Nutshell, 2nd Edition

George T. Heineman, Gary Pollice, Stanley Selkow
Dive Into Algorithms

Dive Into Algorithms

Bradford Tuckfield

Publisher Resources

ISBN: 9780596516246Catalog PageErrata