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:36] mithatcplusplus:pointers_4_slides [2021/10/24 03:02] – [''malloc'' and ''free''] mithat
Line 17: Line 17:
     * reserves a block of memory to hold the specified %%<data-type>%%     * reserves a block of memory to hold the specified %%<data-type>%%
     * returns the base address of that block.     * returns the base address of that block.
 +    * optional parenthesis around ''<data-type>''
  
 <code cpp> <code cpp>
Line 25: Line 26:
 </code> </code>
  
-  * ''foo'' points to a ''double'' that is not associated with a regular variable identifier.+  * ''foo'' points to a ''double'' that isn'associated with a variable identifier.
  
 ===== Example ===== ===== Example =====
Line 38: 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 108: 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 138: 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 182: 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 191: 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 239: 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 296: 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