User Tools

Site Tools


cplusplus:pointers_4

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
cplusplus:pointers_4 [2019/03/31 21:45] mithatcplusplus:pointers_4 [2019/03/31 22:35] (current) mithat
Line 5: Line 5:
  
 ===== Dynamic memory allocation ===== ===== Dynamic memory allocation =====
-**Dynamic memory allocation** allows you to reserve blocks of computer memory for use as storage but without associating a variable name with it. This allocation happens at runtime, hence the term //dynamic// memory allocation. It is used most often used with pointers.+**Dynamic memory allocation** allows you to reserve blocks of computer memory at //runtime// and use them to store variable data. The declared blocks or memory are most often used with pointers.
  
 ==== The ''new'' operator ==== ==== The ''new'' operator ====
Line 17: Line 17:
 </code> </code>
  
-''foo'' now points to a ''double'' that is //not// associated with a variable identifier.+''foo'' now points to a ''double'' that is not associated with a regular variable identifier.
  
 <file cpp simple-allocation.cpp> <file cpp simple-allocation.cpp>
Line 263: Line 263:
 ==== heap vs. stack ==== ==== heap vs. stack ====
  
-Up to now, we may have given the impression that local variables and dynamically allocated storage are both allocated memory from the same pool of RAM. This is not the case. The **stack** is a pool of memory whose allocation and deallocation is automatically managed. Local variables (and global ones too) are allocated from the stack. The **heap** is a pool of memory whose allocation and deallocation is explicitly managed. Dynamically allocated storage is allocated from the heap.+Local variables and dynamically allocated storage come from different pools of RAM. The **stack** is a pool of memory whose allocation and deallocation is automatically managed. Local variables (and global ones too) are allocated from the stack. The **heap** is a pool of memory whose allocation and deallocation is explicitly managed. Dynamically allocated storage is allocated from the heap.
  
 A more detailed discussion of the heap versus the stack, while important, is beyond the scope of the present discussion. But it is important to know that there are two different memory pools that C++ programs draw from. A more detailed discussion of the heap versus the stack, while important, is beyond the scope of the present discussion. But it is important to know that there are two different memory pools that C++ programs draw from.
 +
 ==== ''malloc'' and ''free'' ==== ==== ''malloc'' and ''free'' ====
 ''malloc'' and ''free'' can also used be used to allocate and deallocate storage. They are part of C and so are available in C++ as well. However, they are more cumbersome than ''new'' and ''delete'' introduced in C++, and their use is discouraged. ''malloc'' and ''free'' can also used be used to allocate and deallocate storage. They are part of C and so are available in C++ as well. However, they are more cumbersome than ''new'' and ''delete'' introduced in C++, and their use is discouraged.
cplusplus/pointers_4.txt · Last modified: 2019/03/31 22:35 by mithat

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki