• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.
Sign in to follow this  
Followers 0
thirst4knowledge

memory leaks

5 posts in this topic

How & why do they happen and how can programmers avoid them. I use c++ because I love it XD, how can I stop any memory leaks, as far as I knew the stack would be added to and as soon as a variable went out of scope it would be destroyed and the stack address for allocating new memory would be -= sizeof(type); hence emptying the stack.

The reason I ask is because I have been thinking alot about performance lately and how my windows 7 is about 3 times more responsive and less resource hungry than my vista box, how my chrome is 10x faster than my firefox and does not experience the same leaks.

Also I have noticed that contrary to popular belief, PR etc, most open-source software performs slower than non-oss, so for example ie8 is faster at loading webpages, flash etc than firefox 3.6x

The main exception seems to be Linux OS which is in some ways faster and other ways slower than Windows OS while the two have I would say after a standard install of a packages linux about 10% either way in functionality
0

Share this post


Link to post
Share on other sites
Quote:
as far as I knew the stack would be added to and as soon as a variable went out of scope it would be destroyed
That is the reason why memory leaks usually don't happen with stack-based allocations (although it is technically possible to leak stack memory, e.g. with alloca inside a loop).

Most memory leaks will come from heap allocations, either because of exceptions or simply because of programmer sloppiness. Wrapping heap allocations/deallocations into stack-allocated objects (in the simplest case, that can be std::auto_ptr) is a well-known remedy for that. Keyword: RAII.
Using the non-throwing swap idiom is another example remedy.
0

Share this post


Link to post
Share on other sites
Dang, this topic is all over the place.

Why memory leaks occur. Here's the deal. When you use malloc() or new, you're asking the kernel for a chunk of memory. Your pointers on the stack are "dumb pointers". They do not know what to do when they go out of scope, so the memory is not freed. This is why you must call free() or delete respectively in order to let the kernel know you are done with that memory, so it can use it somewhere else. Languages with garbage collection, like Java, may use reference counting. This basically keeps references of how many instances of your pointer exist, and deletes the pointer when that number reaches 0. I personally use my own shared pointer class, but i know Boost provides one as well.

with your FOSS vs non-FOSS argument, it really depends on the application domain. Some projects are handled better than others, and thus outperform their proprietary counterparts. Some FOSS projects are just not as lucky. The problem is not whether or not it's FOSS, but whether or not the project is managed appropriately.

I hope this helps you out.
0

Share this post


Link to post
Share on other sites
As mentioned above, Boost provides a Smart Pointer library. It is exceedingly useful if you intend on using a lot of dynamically created objects.

If you're really interested in memory management, read up on and learn to use smart pointers (the concept and a library that implements them) thoroughly before starting your project. I found Boost libraries after having already started a game and went back through to insert them. Was something of a nightmare.
0

Share this post


Link to post
Share on other sites
[quote name='thirst4knowledge' timestamp='1281415120' post='579206']
How & why do they happen[/quote]You allocate memory but never release the allocation.[quote]and how can programmers avoid them. I use c++ because I love it XD, how can I stop any memory leaks[/quote]Easy answer: Don't use new or malloc.
Harder answer: Make sure every new/malloc is paired up with a delete/free.
C++ answer: Use smart pointers / RAII[quote]as far as I knew the stack would be added to and as soon as a variable went out of scope it would be destroyed[/quote]Leaks tend to be heap allocations (new/malloc), not stack allocations.

[quote]windows 7 is about 3 times more responsive and less resource hungry than vista ... chrome is 10x faster than firefox ... most open-source software performs slower than non-oss ... ie8 is faster than firefox 3.6x ... Linux OS is in some ways faster and other ways slower than Windows OS ...[/quote]I don't see the connection between your anecdotes and the question of memory leaks...
1

Share this post


Link to post
Share on other sites
From a research view of memory leak, there are two types of memory leaks. One is that you assign a pointer to refer a chunk of memory and then you change the pointer's value so that specific chuck of memory is lost forever, the other one is that you require a chunk of memory and never free it until the end of running your program. There are many non-commercial tools (most for research purpose) that can dealt with these two situations.

For java, we have FindBug. As to C/C++, MemCheck is an popular tool. All these tools are free to use and are able to find your memory leaks in programs.

0

Share this post


Link to post
Share on other sites
[quote]
[color=#1C2837][size=2]The reason I ask is because I have been thinking alot about performance lately and how my windows 7 is about 3 times more responsive and less resource hungry than my vista box, how my chrome is 10x faster than my firefox and does not experience the same leaks.[/quote][/size][/color]
[color=#1C2837][size=2]It all depends. Is a cache a leak? Maybe it should be considered that way, if its hit rate is low and size is large, or maybe it can be tuned better. In most of the examples you gave, I suspect that improvements in the caching algorithms were big contributors to the performance differences between them.[/size][/color]
0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0