Solved

C++ Double Pointer

Posted on 2001-09-04
5
8,364 Views
Last Modified: 2009-05-16
I would like to know how delete operator will work on with double pointer...
0
Comment
Question by:logeswari_b
5 Comments
 
LVL 2

Expert Comment

by:abesoft
ID: 6455340
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
 

Expert Comment

by:JBoschen
ID: 6455345
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
 
LVL 49

Expert Comment

by:DanRollins
ID: 6456391
>> 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
 
LVL 2

Expert Comment

by:abesoft
ID: 6457297
Aaaagh
0
 
LVL 30

Accepted Solution

by:
Axter earned 100 total points
ID: 6457932
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

Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Templates For Beginners Or How To Encourage The Compiler To Work For You Introduction This tutorial is targeted at the reader who is, perhaps, familiar with the basics of C++ but would prefer a little slower introduction to the more ad…
  Included as part of the C++ Standard Template Library (STL) is a collection of generic containers. Each of these containers serves a different purpose and has different pros and cons. It is often difficult to decide which container to use and …
The viewer will learn how to user default arguments when defining functions. This method of defining functions will be contrasted with the non-default-argument of defining functions.
The viewer will be introduced to the technique of using vectors in C++. The video will cover how to define a vector, store values in the vector and retrieve data from the values stored in the vector.

810 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question