User Tools

Site Tools


cplusplus:pointers_4_slides

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
cplusplus:pointers_4_slides [2019/03/31 22:31] mithatcplusplus:pointers_4_slides [2021/10/24 03:02] – [''malloc'' and ''free''] mithat
Line 11: Line 11:
 ===== Dynamic memory allocation ===== ===== Dynamic memory allocation =====
   * **Dynamic memory allocation** allows you to reserve blocks of computer memory at //runtime//.   * **Dynamic memory allocation** allows you to reserve blocks of computer memory at //runtime//.
-  * Typically used without associating a variable name with it.+  * Typically used with pointers.
  
 ===== The new operator ===== ===== The new operator =====
-  * ''new <data-type>'' reserves a block of memory to hold the specified %%<data-type>%% and returns the base address of that block:+  * ''new <data-type>'' 
 +    * reserves a block of memory to hold the specified %%<data-type>%% 
 +    * returns the base address of that block
 +    * optional parenthesis around ''<data-type>''
  
 <code cpp> <code cpp>
Line 23: Line 26:
 </code> </code>
  
-  * ''foo'' points to a ''double'' that is //not// a variable.+  * ''foo'' points to a ''double'' that isn't associated with a variable identifier.
  
 ===== Example ===== ===== Example =====
Line 36: Line 39:
     double *myPtr, *yourPtr;     double *myPtr, *yourPtr;
  
-    myPtr = new (double)+    myPtr = new double; 
-    yourPtr = new (double);+    yourPtr = new double;
  
     cout << "Enter a number: ";     cout << "Enter a number: ";
Line 106: Line 109:
 void ninetynine() void ninetynine()
 { {
-    int localVar = 99;+    int localVar = 99;  // localVar is destroyed at end of fcn call
     cout << localVar << endl;     cout << localVar << endl;
 } }
Line 136: Line 139:
 void ninetynine() void ninetynine()
 { {
-    int *localPtr = new int;+    int *localPtr = nullptr;  // localPtr is destroyed at end of fcn call 
 +    localPtr = new int;       // but not dynamically allocated storage
  
     *localPtr = 99;     *localPtr = 99;
Line 180: Line 184:
   * Memory leaks, no matter how small, are bad programming practice.   * Memory leaks, no matter how small, are bad programming practice.
   * Can be fixed by the proper use of **deallocation**: releasing back to the OS storage that was previously dynamically allocated.    * Can be fixed by the proper use of **deallocation**: releasing back to the OS storage that was previously dynamically allocated. 
-  * Deallocation of dynamically allocated storage does not happen automatically.+  * **Deallocation of dynamically allocated storage does not happen automatically.**
     * You must explicitly (i.e., manually) deallocate the memory.     * You must explicitly (i.e., manually) deallocate the memory.
  
Line 189: Line 193:
 int *myPtr = new int; int *myPtr = new int;
 ... ...
-delete myPtr; // deallocates block pointed to by localPtr.+delete myPtr; // deallocates block pointed to by myPtr.
 </code> </code>
  
Line 237: Line 241:
 int main() int main()
 { {
-    double *sales = nullptr, // To dynamically allocate an array +    double *sales = nullptr,    // To dynamically allocate an array 
-    total = 0.0, // Accumulator +    total = 0.0,                // Accumulator 
-    average; // To hold average sales +    average;                    // To hold average sales 
-    int numDays, // To hold the number of days of sales +    int numDays,                // To hold the number of days of sales 
-        count; // Counter variable+        count;                  // Counter variable
  
     // Get the number of days of sales.     // Get the number of days of sales.
Line 294: Line 298:
   * ''malloc'' and ''free'' can also used be used to allocate and deallocate storage.   * ''malloc'' and ''free'' can also used be used to allocate and deallocate storage.
   * Part of C and so are available in C++ as well.   * Part of C and so are available in C++ as well.
-  * More cumbersome than ''new'' and ''delete'', and their use is discouraged.+  * More cumbersome than ''new'' and ''delete'', so their use is discouraged.
  
 ===== Returning Pointers from Functions ===== ===== Returning Pointers from Functions =====
cplusplus/pointers_4_slides.txt · Last modified: 2021/10/24 03:02 by mithat

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki