In my code, I am allocating an integer array using new. After that I am wrapping this pointer to an auto_ptr. I know that the auto_ptr call its destructor automatically. Since my auto_ptr is pointing to an array (allocated using new), Will the array get deleted along with auto_ptr or will it cause a memory leak. Here is my sample code.
std::auto_ptr<int> pointer;
void function()
{
int *array = new int[2];
array[0] = 10;
array[1] = 20;
pointer.reset((int*) array);
}
int _tmain(int argc, _TCHAR* argv[])
{
function();
return 0;
}
The array will not be deleted correctly. auto_ptr
uses delete contained_item;
. For an array it would need to use delete [] contained_item;
instead. The result is undefined behavior.
As James McNellis said, you really want std::vector
here -- no new
, no auto_ptr
and no worries.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With