Using C++ template metaprograms
C++ gems
Barrier techniques for incremental tracing
Proceedings of the 1st international symposium on Memory management
Generalizing the concepts behind auto_ptr
C/C++ Users Journal
C/C++ Users Journal - Testing & debugging
Automated user interface engineering with a pattern reflecting programming language
Automated Software Engineering
Application invariants: Design by Contract augmented with deployment correctness logic
Software—Practice & Experience
Raw pointers in application classes of C++ considered harmful
ACM SIGPLAN Notices
Simple algebraic data types for C
Software—Practice & Experience
Hi-index | 0.00 |
Smart pointers denote a well-known technique for collective resource ownership, e.g. sharing dynamic object instances, while usually supporting automatic garbage collection based on reference counting. The original method has been retargeted to serve as a generic defensive programming method for 'exhaustive tracking' of erroneous pointer use in C++. Automatic bug tracking is supported in a unified manner both for pointers to heap memory, i.e. free storage, as well as for pointers to stack or global memory, i.e. auto or static storage. Overall, the presented technique (a) offers a simple contract for memory allocation and use; (b) supports type and indirection depth genericity; (c) implements most operators supported for built-in pointers with embedded bug defense; (d) offers an alternative way of employing a garbage collection facility for memory leak detection; and (e) provides an appropriate collection of utility macros, through which defensive pointers should be used, with an alternative version re-targeted to normal native pointers.