Shared Pointer A shared pointer is a smart pointer that allows for distributed ownership of data. Each time it is assigned, a reference count is incremented, indicating one more owner of the data. When the pointer goes out of scope or an owner calls reset , the reference count is decremented. When the reference count goes to 0, the data pointed to is deallocated. Use make_shared : auto person = std :: make_shared < Person > ( ) ; if ( person ) { cout << "Person's address is " << person -> address ; } C++17 allows use of shared pointers to point to dynamically allocated arrays. However, make_shared cannot be used. Below is an example: shared_ptr < Person [ ] > persons ( new Person [ 10 ] ) ; persons [ 0 ] . _name = "Jack Sparrow" ; persons [ 0 ] . _address = "Caribbean" ; cout << "Address of first person " << persons [ 0 ] . address << endl ; A better solutio...
Pointers and Dynamic Memory Dynamic memory is useful when you don't know the memory requirements at compile time. Stack and the Heap Memory is divided into the stack and the heap or free store . Stack memory is automatically managed, whereas heap memory is not. Activation Records are blocks of memory on the stack that are used to implement functions. For example, when main calls foo , foo 's activation record is at the top of the stack. Once foo returns, the activation record for foo is marked as deallocated, and another function call can make use of that space. Any parameters passed from main to foo are copied into foo 's activation record. Below is an illustration for the activation record from Wikipedia: Memory allocated on the heap lives indepedently of the function calls. Once has to make sure to deallocate memory allocated on the heap. Some language...
C++ Tour Hello World Here is the hello world program for C++: # include <iostream> int main ( ) { std :: cout << "Hello, World" << std :: endl ; return 0 ; } Building a C++ Program Building a C++ program is a three step process: Code is run through preprocessor which processes meta information The code is compiled where each .cpp file is translated to .o object file Individual object files are linked together into a single application. Main function Main function is where program execution starts. It comes in two flavors: with and without arguments. With arguments, it looks as follows: int main ( int argc , char * argv [ ] ) where argc gives the number of commandline arguments to the program, and argv array contains those arguments. The actual arguments start from index 1. I/O Streams cout is the stream for standard output, cerr is the strea...
Comments
Post a Comment