"Memory as a Programming Concept in C and C++", by Frantisek Franek
From the Preface:
"The motivation for this book came from years of observing computer science students at universities as well as professional programmers working in software development. I had come to the conclusion that there seemed to be a gap in their understanding of programming. They usually understood the syntax of the programming language they were using and had a reasonable grasp of such topics as algorithms and data. However, a program is not executed in a vacuum; it is executed in computer memory. This simple fact exerts a powerful influence on the actual behavior of the program -- or, expressed more precisely, a subtle yet powerful influence on the semantics of the particular programming language. I had observed that many students and programmers did not fully understand how memory affected the behavior of the C and C++ programs they were designing. This book is an attempt to fill this gap and provide students and programmers alike with a text that is focused on this topic."
Table of Contents:
1. Introduction 2. From source file to executable file 3. Variables and objects, pointers and addresses 4. Dynamic allocation and deallocation of memory 5. Functions and function calls 6. One-dimensional arrays and strings 7. Multi-dimensional arrays 8. Classes and objects 9. Linked data structures 10. Memory leaks and their debugging 11. Programs in execution - processes and threads.
Back before embarking on the "enormous challenge" (as the Sun PR machine ludicrously describes it) of creating a "programming language better than Java", GuySteele co-authored papers in the LambdaTheUltimate series concerning a processor design that executed a cut down SchemeLanguage directly on the metal. see http://library.readscheme.org/page1.html "Design of LISP-based Processors, or SCHEME: A Dielectric LISP, or Finite Memories Considered Harmful, or LAMBDA: The Ultimate Opcode"
This design captured several interesting ideas to do with memory as a programming concept.
See also SmallMemorySoftware