Website Summary Files Commits Branches @commit @diff @stats
diff options
context:
space:
mode:
Commitecfd40d381d4601a53e0b3783113d9ee69b891c8 (patch)
Author
 Angel Dimitriev <achi_d@abv.bg>
2021-12-15 21:32:24 +0200
Committer
 GitHub <noreply@github.com>
2021-12-15 21:32:24 +0200
Files287c956d90729798feb3bb1550f7eff50f3b30dc
Introduction_to_programming_FMI-ecfd40d381d4601a53e0b3783113d9ee69b891c8.tar
Introduction_to_programming_FMI-ecfd40d381d4601a53e0b3783113d9ee69b891c8.tar.gz
Introduction_to_programming_FMI-ecfd40d381d4601a53e0b3783113d9ee69b891c8.zip
Parent8618b52db0ee9b0c14d1b45612ed44ef3b5416db (diff)
Update README.md
1 files changed, 58 insertions, 0 deletions
-rw-r--r--Sem. 10/README.md58
diff --git a/Sem. 10/README.md b/Sem. 10/README.md
index 26780a0..a636bbb 100644
--- a/Sem. 10/README.md
+++ b/Sem. 10/README.md
@@ -25,3 +25,61 @@
int result = *ptr;
cout << result; //10
```
+
+Разлика между указател и референция?
+
+ - Указателят може да се "re-assign"-ва. Може да приема нови стойност
+ - Референцията трябва да се инициализира при създаването.
+ - Указателят има неутрална стойност (nullptr), а референцията няма.
+ - Може да се направи масив от указатели, но не и масив от референции.
+
+
+## Динамична памет
+**stack**
+- паметта се заделя ПРЕДИ да се компилира програмата.
+- паметта се освобождава/трие/маркира като свободна автоматично - при излизането от scope-а, в който е дефинирана.
+
+Искаме памет по време на изпълнението на програмта?
+**heap**
+ - Масиви и обекти без предварително да е известна големината.
+
+
+Оператор **new**
+
+- Връща указтел към началото на паметта
+
+```c++
+new int[n]; n НЕ е задължително да е константа!
+```
+
+Заделянето на динамична памет е много "бавна" операция!!
+
+Динамична памет НЕ се трие автоматично.
+
+Оператор delete[] Освобождава/маркира като свободна динамична памет!
+
+
+```c++
+void f()
+{
+ int x = 40;
+ char ch[2] = {'a', 'b'};
+ int* ptr = new int[3]
+}
+```
+
+![enter image description here](https://i.ibb.co/vYdR6Zj/dyn-mem.png)
+
+След приключването на функцията ще се изчисти паметта в стека, но НЕ и паметта в heap-а.
+
+За това ние трябва ръчно да я маркираме като свободна.
+
+```c++
+void f()
+{
+ int x = 40;
+ char ch[2] = {'a', 'b'};
+ int* ptr = new int[3];
+ <br> delete[] ptr; <\br>
+}
+```