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 structures. 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.
The overwhelming majority of program bugs and computer crashes stem from problems of memory access, allocation, or deallocation. Such memory-related problems are also notoriously difficult to debug. Yet the role that memory plays in C and C++ programming is a subject often overlooked in courses and books because it requires specialized knowledge of operating systems, compilers, and computer architecture in addition to a familiarity with the language themselves. Most professional programmers learn about memory entirely through experience of the trouble it causes.
This book provides students and professional programmers with a concise yet comprehensive view of the role that memory plays in all aspects of programming and program behavior. Assuming only a basic familiarity with C or C++, the author describes the techniques, methods, and tools available to deal with the problems related to memory and its effective use.
TABLE OF CONTENT:
Chapter 01 - Introduction
Chapter 02 - From Source File to Executable File
Chapter 03 - Variables and Objects; Pointers and Addresses
Chapter 04 - Dynamic Allocation and Deallocation of Memory
Chapter 05 - Functions and Function Calls
Chapter 06 - One-Dimensional Arrays and Strings
Chapter 07 - Multi-Dimensional Arrays
Chapter 08 - Classes and Objects
Chapter 09 - Linked Data Structures
Chapter 10 - Memory Leaks and Their Debugging
Chapter 11 - Programs in Execution: Processes and Threads
Appendix 1 - Hanoi Towers Puzzle
Appendix 2 - Tracing Objects in C++
Appendix 3 - Tracing Objects and Memory in C++
Appendix 4 - Thread-Safe and Process-Safe Reporting and Logging Functions
Password:ganelon
No comments:
Post a Comment