
Mateusz Loskot wrote:
Hi,
I'd like to make a custom deleter resetting pointer to 0 or other value (e.g. for debugging purposes) after resource has been deallocated. Would anyone suggest better option to this presented below?
struct DeleterT { void operator()(::T* ptr) { ::DestroyT(ptr);
// uses Visual C++ specific integer type *reinterpret_cast<__int64*>(&ptr) = 0; } }; This doesn't actually do anything. The code is undefined (accessing casted pointer, aliasing violation), but even the most common interpretation simply does the same thing as "ptr = 0;". ptr is a by-val argument. You cannot know where the original member you want to reset is, so you can't reset it. All you are modifying here is your local function argument - and possibly the function return address, if you're on a 32-bit system ...
Sebastian