File tree Expand file tree Collapse file tree 1 file changed +36
-0
lines changed
Expand file tree Collapse file tree 1 file changed +36
-0
lines changed Original file line number Diff line number Diff line change @@ -303,6 +303,42 @@ N::T t; // Use name T in namespace N
303303using namespace N; // Make T visible without N::
304304```
305305
306+ ## ` memory ` (dynamic memory management)
307+
308+ ``` cpp
309+ #include < memory> // Include memory (std namespace)
310+ shared_ptr<int > x; // Empty shared_ptr to a integer on heap. Uses reference counting for cleaning up objects.
311+ x = make_shared<int >(12 ); // Allocate value 12 on heap
312+ shared_ptr<int > y = x; // Copy shared_ptr, implicit changes reference count to 2.
313+ cout << *y; // Deference y to print '12'
314+ if (y.get() == x.get()) { // Raw pointers (here x == y)
315+ cout << "Same";
316+ }
317+ y.reset(); // Eliminate one owner of object
318+ if (y.get() != x.get()) {
319+ cout << "Different";
320+ }
321+ if (y == nullptr ) { // Can compare against nullptr (here returns true)
322+ cout << "Empty";
323+ }
324+ y = make_shared<int >(15 ); // Assign new value
325+ cout << *y; // Deference x to print '15'
326+ cout << *x; // Deference x to print '12'
327+ weak_ptr<int > w; // Create empty weak pointer
328+ w = y; // w has weak reference to y.
329+ if (shared_ptr<int > s = w.lock()) { // Has to be copied into a shared_ptr before usage
330+ cout << * s;
331+ }
332+ unique_ptr<int > z; // Create empty unique pointers
333+ unique_ptr<int > q;
334+ z = make_unique<int >(16 ); // Allocate int (16) on heap. Only one reference allowed.
335+ q = move(z); // Move reference from z to q.
336+ if (z == nullptr ){
337+ cout << "Z null";
338+ }
339+ cout << *q;
340+ ```
341+
306342## ` math.h ` , ` cmath ` (floating point math)
307343
308344``` cpp
You can’t perform that action at this time.
0 commit comments