# new keyword
## Notes
The `new` keyword is C++ equivalent of `malloc()` from C along with the added benefit of calling the constructor when used with a class. Using new allows you to allocate memory on Heap.
### How the new keyword works?
1. On calling `new`, the new keyword takes the size needed to be loaded in the memory as input.
2. It searches through the heap to find a continuous block of memory as required.
3. After successfully finding the block of memory, it returns the pointer to the memory.
### How to load a variable on heap?
```cpp
int *var = new int;
```
The `var` will store the pointer to the heap memory where the value can be stored. It will be of 4 bytes. (size of int = 4 bytes)
### How to load a block of memory?
```cpp
int *b = new int[50]; //200 bytes
```
Using `[]` brackets will allocate 50 block of memory with the size of int. This will be 200 bytes. (50 blocks of size of int = 50 x 4 = 200 bytes)
### Important Things to know before using new
- Always clear the memory after the scope of `new` is complete. Since the memory is allocated in heap, it does not auto delete. Clear the memory using `delete` keyword as follows:
```cpp
int *a = new int;
delete a;//Since A single block of memory is allocated//clear directly using delete keyword
int *b = new int[50];
delete[] b;// Remember to use [] next to delete if you want to clear all the memory blocks.// If you don't use [], it will only clear the first block of memory
```
- For a class, though `new` in C++ it equivalent to `malloc` in C, do not use them interchangeably. `malloc()` just returns pointer to the memory block when you use it with a class. `new` returns the pointer and also initializes the object for the class.
## Resources