- Tombstone (programming)
Tombstones are a mechanism to detect
dangling pointer s that can appear in certain computerprogramming language s, e. g. C,C++ andassembly language s, and to act as a containment to their dangerous effects.A tombstone is a structure that acts as an intermediary between a pointer and the
heap-dynamic data in memory. The pointer points only at tombstones and never to the memory that holds the actual value. When the data is deallocated, the tombstone is set to a null value (or, more generally, to a value that is illegal for a pointer in the given runtime environment), indicating that the variable no longer exists. This prevents the use of invalid pointers, which would otherwise access the memory area that once belonged to the now deallocated variable, although it may already contain other data, in turn leading to corruption of in-memory data. Depending on theoperating system , the CPU can automatically detect such an invalid access (e. g. for the null value: a "null pointer dereference error"). This supports in analyzing the actual reason, a programming error, indebugging , and it can also be used to abort the program in production use, to prevent it from continuing with invalid data structures.The downsides of using tombstones include a
computational overhead and additional memory consumption: extra processing is necessary to follow the path from the pointer to data through the tombstone, and extra memory is necessary to retain tombstones for every pointer throughout the program. One other problem is that all the code — that needs to work with the pointers in question — needs to be implemented to use the tombstone mechanism.No popular programming language currently uses tombstones. However, built–in support by the programming language or the compiler is not necessary to use them.
ee also
*
Locks-and-keys
Wikimedia Foundation. 2010.