-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstack & heap lifetime(dynamic memory allocation).cpp
53 lines (41 loc) · 1.34 KB
/
stack & heap lifetime(dynamic memory allocation).cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <iostream>
int main()
{
//stack lifetime
//lifetime is controlled by the scoper mechanism
//start life
{
// intialize * var
int number = 100;
int *p_number2=new int;
}
//end life
//s td::cout << number ; -> ERROR
//std::cout << p_number2 ; -> ERROR
//heap lifetime
//heap memory
//heap allocated memory
int *p_number = nullptr;
p_number = new int;
*p_number = 77;
std::cout << p_number << " " ;
std::cout << *p_number << std::endl ;
//life end
delete p_number;
p_number = nullptr;
int *p_number1 = nullptr ; //a pointer pointing nowhere
//*p_number1 = 10; // writing to nowhere is bad :/
int*p_number5 = new int;// a pointer pointing somewhere :D
*p_number5 = 10 ;//this is gonna be ok ;
std::cout << "ponter : " << p_number5 << " value : " << *p_number5 << "\n";
delete p_number5;//release pointer
p_number5 = nullptr;//reset memory pointer to null
p_number5 = new int ; // reuse again
*p_number5 = 100 ;
std::cout << "ponter : " << p_number5 << " value : " << *p_number5 << "\n";
delete p_number5;//release pointer
p_number5 = nullptr;//reset memory pointer to null
std::string *strings = new std::string[1000] ;
int *numbers = new int[1000];
return 0;
}