简体   繁体   中英

C++, Seg Faults, and Memory Management

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:

Smart Pointers: Or who owns you baby?

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM