If we delete a memory inside a function, we would also want to update the pointer to NULL so that the caller knows the pointer will not refer to a valid located memory any more. E.g.
if (p)
delete_memory(p);
assert(NULL == p);
Therefore, we can use the reference to pointer as the parameter of function delete_memory().
#include <iostream>
using namespace std;
template <typename T>
void delete_memory(T*& p)
{
if (p) {
delete p;
p = NULL;
}
}
int main()
{
int *p = new int(10);
cout << "p: " << p << endl;
delete_memory<int>(p);
cout << "After delete_memory(), p: " << p << endl; // p is 0 now
return 0;
}
In the above example, we use template for the delete_memory function so it can handle different types of pointers.
Tuesday, January 15, 2013
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment