From bcfdfeb035c8a2356bf751a6e398ace5968e35bd Mon Sep 17 00:00:00 2001
From: Mactavish <maczhanchao@yahoo.com>
Date: Mon, 24 Apr 2023 10:19:49 +0200
Subject: [PATCH] add storage duration

---
 clang.md                         |  59 +++++++++++++++++++++++++++++++
 images/program-address-space.png | Bin 0 -> 22574 bytes
 2 files changed, 59 insertions(+)
 create mode 100644 images/program-address-space.png

diff --git a/clang.md b/clang.md
index 4b6ef33..2dbfd0e 100644
--- a/clang.md
+++ b/clang.md
@@ -325,6 +325,65 @@ char str* = "string literal"; // can not be modified via array subscript
 
 ## C Memory Management
 
+Memory can be viewed as an array of consecutively addressed memory cells. Typical size of each size is 1 `byte`. A char takes one byte whereas other types use multiple cells depending on there size.
+
+### Program Address Space
+
+The figure below depicts the classical address space of a program:
+
+![](./images/program-address-space.png)
+
+There a typically 4 regions:
+
+- **Stack**: local variables inside functions, grows downwards
+- **Heap**: space requested for dynamic data via `malloc()`, resizes dynamically, grows upwards
+- **Static data**: variables declared outside functions, does not grow or shrink. Loaded when program starts, can be modified
+- **code**: loaded when program starts, does not change
+- `0x0000 0000` is reserved and unwriteable/unreadable, so the program crashes on null pointer access.
+
+### Storage Duration
+
+Objects have a storage duration that determines their lifetime. There are **four** storage duration available in C: `automatic`, `static`, `thread`, `allocated`. We won't cover `thread` storage duration here.
+
+#### Automatic
+
+Basically anything you declared within a block or a function has `automatic` storage, which means their lifetimes begins when the block in which they're declared begins execution, and ends when execution of the block ends.
+
+If the block is entered recursively, new objects will be created each time and have their own storage.
+
+#### Static
+
+Objects declared in file scope have `static` storage duration. The lifetime of these objects is the entire duration of the program and their stored value is initialized only once prior to `main` function.
+
+#### Allocated
+
+`Allocated` storage is allocated and deallocated through library functions on requests, using dynamic memory allocation functions. 
+
+
+A concrete example of these storage durations:
+
+```c
+#include <stdio.h>
+#include <stdlib.h>
+ 
+/* static storage duration */
+int A;
+ 
+int main(void)
+{
+    printf("&A = %p\n", (void*)&A);
+ 
+    /* automatic storage duration */
+    int A = 1;   // hides global A
+    printf("&A = %p\n", (void*)&A);
+ 
+    /* allocated storage duration */
+    int *ptr_1 = malloc(sizeof(int));   /* start allocated storage duration */
+    printf("address of int in allocated memory = %p\n", (void*)ptr_1);
+    free(ptr_1);                        /* stop allocated storage duration  */
+} 
+```
+
 ## C Compilation Process
 
 Unlike other interpreted programming languages, we use compilers to compile C written programs.
diff --git a/images/program-address-space.png b/images/program-address-space.png
new file mode 100644
index 0000000000000000000000000000000000000000..76cf8fcfc1800c5901824490441f72f1383b21da
GIT binary patch
literal 22574
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
bf<NjH7zfFAP7@OV9m3}6>gTe~DWM4fQzP9;

literal 0
HcmV?d00001

-- 
GitLab