What is a dangling pointer in C++? | CPP Interview Questions

A dangling pointer arises when you use the address of an object after its lifetime is over.
 This may occur in situations like returning addresses of the automatic variables from a function or using the address of the memory block after it is freed.
 The following code snippet shows this:
class Sample
{
public: int *ptr; Sample(int i)
{
ptr = new int(i);
}
~Sample()
{
delete ptr;
}
void PrintValO
{
cout« "The value is " « *ptr;
}
};
void SomeFunc(Sample x)
{
cout« "Say i am in someFunc " « endl;
}
int main()
{
Sample si = 10;
SomeFunc(sl);
sl.PrintVal();
}
In the above example when PrintVal() function is called it is called by the pointer that has been freed by the destructor in SomeFunc.

0 comments:

Post a Comment

Blogger news