Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 8394
  • Last Modified:

C++ Double Pointer

I would like to know how delete operator will work on with double pointer...
0
logeswari_b
Asked:
logeswari_b
1 Solution
 
abesoftCommented:
If you mean:
    X **p;
then delete will work fine for one of the items pointed at.  So, p points at a pointer to an X.  delete will delete the X, or the pointer to the X, but not both.  So typically you would do something like:
    p = new X*;
    *p = new X;
    // ... use p ...
    delete *p;
    delete p;
You need to think hard about what you are allocating and deleting.
0
 
JBoschenCommented:
If you're referring to a pointer to a pointer, p**, delete will only operate on the first pointer. To delete both, you need to delete the second first, delete *p; then delete p;
0
 
DanRollinsCommented:
>> I would like to know how delete operator will work on with double pointer...

Just to cover the bases:
Deleting a pointer to a double works just like deleting a pointer to anything else -- it frees up the allocation.

   double* pFloatingPtNum= new double;
   *pFloatingPtNum= 0.123456789;

   delete pFloatingPtNum; // no problemo!

=-=-=-=-=-=-=-=-=-
I have a nearly irresitible urge to lock this question.

-- Dan
0
 
abesoftCommented:
Aaaagh
0
 
AxterCommented:
I'm assuming that you are reffering to (**) type of double pointers, which is a pointer array.
Pointer array variables are used for an array of pointers.

The array of pointers are create with the new[] operator.
Since the new[] operator is used to create the array, the delete[] operator should be used to delete the double pointer array.
If you use the plain delete operator, this can cause memory leaks in your program.

The following is an example on how to use a pointer array variable.

void CreateAndDestroyA_Pointer_Array(int QtyPointers)
{
     int i;
     //Create an array of pointers
     int **List = new int*[QtyPointers];
     
     //Create an object (int) for each pointer
     for (i = 0;i < QtyPointers;i++)
     {
          List[i] = new int;
     }

     //Assign a value to each item in the list
     for (i = 0;i < QtyPointers;i++)
     {
          *List[i] = i*11;
     }

     //Delete each object
     for (i = 0;i < QtyPointers;i++)
     {
          delete List[i];
     }

     //Delete the array of pointers
     delete [] List;
}


int main(int argc, char* argv[])
{
     CreateAndDestroyA_Pointer_Array(15);
     return 0;
}

You'll notice in the above example, that before using the delete[] operator, first each individual pointer was deleted.  Then the pointer array was deleted.
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now