ece150: add allocation

This commit is contained in:
eggy 2022-10-27 14:46:04 -04:00
parent 62a8acb596
commit 4d150574f9

View File

@ -174,6 +174,39 @@ If there is not a null terminator, attempting to access a string continues to go
Compared to static memory allocation, which is done by the compiler, dynamic memory is managed by the developer, and is stored between the call stack and data segment in the **heap**.
The `new` operator attempts to allocate its type operand, optionally initialising the variable and returning its memory address.
```cpp
char *c{new char{'i'}};
```
If the operating system cannot allocate that much memory, `std::bad_alloc` is raised, but passing in `nothrow` can return a `nullptr` instead if allocation fails.
```cpp
char *c{new(nothrow) char{`i`}};
if (c == nullptr) {
}
```
The `delete` operator tells the OS that the memory address passed is no longer needed. Generally, it is a good idea to set the deleted pointer afterward to a null pointer.
```cpp
delete c;
c = nullptr;
```
If deleting arrays, `delete[]` should be used instead.
!!! warning
Statically allocated memory **cannot be deallocated** manually as it is done so by the compiler, so differentiating the two is generally a good idea.
### Wild pointers
### Dangling pointers
### Memory leaks
## Pointers
!!! definition