Jump to content

  • Log In with Google      Sign In   
  • Create Account

We're offering banner ads on our site from just $5!

1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


memory management examples?


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
3 replies to this topic

#1 Jarwulf   Members   -  Reputation: 222

Like
0Likes
Like

Posted 08 May 2013 - 09:18 PM

Hi, never bothered much with memory management in C++ except when it was already in the code. I simply write my variables array etc without worrying about all that deallocating allocating stuff. I'm having a little bit of an issue understanding when it is necessary and when it is not. Now supposedly smart pointers are supposed to a handy blanket solution to C++ memory issues so that you don't have worry about anything else besides them right? Can somebody point me to some easy to understand samples of smart pointers specifically aimed toward someone who's trying to understand when they're necessary?



Sponsor:

#2 Satharis   Members   -  Reputation: 1069

Like
0Likes
Like

Posted 08 May 2013 - 11:20 PM

Smart pointers aren't a magical fix all solution.

Common advice is to use stack allocation where you can, and where it makes sense. Only do heap allocation when it will be useful(i.e. you need to destroy and create things often or with strange lifetime that couldn't be controlled easily through function or object scoping.)

Smart pointers are basically just a simple object wrapped around "c-style" pointers that controls the lifetime of the memory automagically. For example a reference counted pointer like shared_ptr essentially just keeps track of how many references are live to the allocated memory, then just calls delete when the last reference dies.

They're mainly just considered good practice because they're a minor performance cost in order to more or less automate management of the objects for you. Though there are considerations still like making sure each reference can be destroyed and you aren't allocating bulk amounts of smart pointers in a tight loop(or something like that, which might have a visible performance impact.)

#3 NightCreature83   Crossbones+   -  Reputation: 2937

Like
0Likes
Like

Posted 09 May 2013 - 01:59 AM


Common advice is to use stack allocation where you can, and where it makes sense. Only do heap allocation when it will be useful(i.e. you need to destroy and create things often or with strange lifetime that couldn't be controlled easily through function or object scoping.)
 

When you need to create and destroy things often you will want to stay away from the heap as dynamic memory allocation is generally slow. Keeping an array arround of live and dead objects is generally faster, especially when reusing the dead objects again.


Worked on titles: CMR:DiRT2, DiRT 3, DiRT: Showdown, GRID 2, Mad Max

#4 Matt-D   Crossbones+   -  Reputation: 1467

Like
0Likes
Like

Posted 09 May 2013 - 02:25 PM

See "Working with Dynamic Memory in C++":

http://www.informit.com/articles/article.aspx?p=1944072






Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS