C++ Logo

std-proposals

Advanced search

[std-proposals] Delete...why not a parameter by reference?!

From: organicoman <organicoman_at_[hidden]>
Date: Sat, 23 Aug 2025 04:04:05 +0100
Hello,One of the recurring bugs in c++ is use after free.I'm wondering, why the delete operator doesn't take the pointer parameter by reference and nullify it?So instead ofvoid operator delete(void* p);It becomes void operator delete(void* &p);And it assigns the value nullptr to p after freeing its corresponding memory.Look at this example:---------{ int* p = new int(42); int* const& to_p = p; // as a guideline delete p; // if taken by reference an nullified *p; // this will be a guaranteed runtime error *to_p; // and all previous copies obey too}---------On top of that, basically we need just to add a guideline that mandate:-All duplication of a pointer should be by reference if modifying, or const reference if not.So it is guaranteed that if you free the memory using any of the references, all copies will be nullptr.So, is there any constraints to prevents this other than breaking old code?RegardsSent from my Galaxy

Received on 2025-08-23 03:04:17