I'm moving from Java to C++ and have really enjoyed it. One thing I don't enjoy is not understanding memory at all because Java used to do that for me.
I've purchased a book : Memory as a Programming Concept in C and C++ - Frantisek Franek
Are there some good sites for me to go and learn interactively about C/C++ and memory use (tutorials, forums, user groups)?
Memory management is nearly automatic in C++ (with a few caveats).
Most of the time don't dynamically allocate memory.
Use local variables (and normal member variables) and they will construct and destruct automatically.
When you do need pointers use a smart pointer.
Start with using boost::shared_pointer<T> instead of pointers.
This will get you on the correct path and stop accidently deleting memory at the wrong time and 90% of your code will release correctly (unfortunately cycles will cause a problem (in terms of leaks only) and you will need to design accordingly (but we have other smart pointers to deal with cycles weak_ptr))
My fundamental rule is that a class never contain a RAW pointer. Always use some form of standard container or a smart pointer. Using these; destructor calls become automatic.
Once you have the feeling start reading about the other smart pointers and when to use them:
Try these:
http://www.mycplus.com/tutorials/cplusplus-programming-tutorials/memory-management/
http://www.cantrip.org/wave12.html
http://linuxdevcenter.com/pub/a/linux/2003/05/08/cpp_mm-1.html
And in wikibook: http://en.wikibooks.org/wiki/C++_Programming/Memory_Management
This article will compare the Java memory management operators with the C++ equivalents: http://www.javamex.com/java_equivalents/memory_management.shtml
http://www.infosys.tuwien.ac.at/Staff/tom/Teaching/UniZH/CPP/slides/cpp_07.pdf
Hope these will help you!
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.