[Home]
[Edit this page]
[Recent Changes]
[Special Pages]
[Help]
CppPointer
When a pointer is uninitialized, it should point to 0 or NULL. You initialize a pointer using the keyword new, which reserves free space for the dynamically allocated instance and returns the address to it.
C++ does not free this memory on its own. Therefore, you have to call delete to do so.
Reading/writing from/to an uninitialized pointer results in an access violation.
Prefer using a smart pointer over a plain pointer [1,2], e.g. use an std::auto_ptr. Use 0 rather than NULL [3]
Using an auto_ptr:
Avoid non-trivial pointer arithmetic [4].
[Edit this page] [Page history] [What links here] [Discuss this topic] [Printer Friendly]
CppPointer
(C++) Pointer
A pointer is a type that holds an address.When a pointer is uninitialized, it should point to 0 or NULL. You initialize a pointer using the keyword new, which reserves free space for the dynamically allocated instance and returns the address to it.
C++ does not free this memory on its own. Therefore, you have to call delete to do so.
Reading/writing from/to an uninitialized pointer results in an access violation.
Prefer using a smart pointer over a plain pointer [1,2], e.g. use an std::auto_ptr. Use 0 rather than NULL [3]
{
MyClass * pClass = new MyClass;
pClass->doStuff();
delete pClass
}
Using an auto_ptr:
{ const std::auto_ptr<MyClass> pClass(new MyClass); pClass->doStuff(); //Hey, the same way of accessing the pointed instance! //Done, std::auto_ptr deletes itself when going out of scope }
- include <memory>
Avoid non-trivial pointer arithmetic [4].
'Pointer' links
Code links
Reference
- 1) Scott Meyers. Effective C++ (3rd edition).ISBN: 0-321-33487-6. Item 13: 'Use objects to manage resources'
- 2) Scott Meyers. Effective C++ (3rd edition).ISBN: 0-321-33487-6. Item 17: 'Store newed objects in smart pointers in standalone statements'
- 3) Bjarne Stroustrup. The C++ Programming Language (3rd edition).ISBN: 0-201-88954-4 5.8.3: 'Use 0 rather than NULL'.
- 4) Bjarne Stroustrup. The C++ Programming Language (3rd edition).ISBN: 0-201-88954-4 5.8.1: 'Avoid non-trivial pointer arithmetic'.
[Edit this page] [Page history] [What links here] [Discuss this topic] [Printer Friendly]
