[Portaudio] STL/ISO C++ containers?
Phil Burk
pburk at mobileer.com
Thu Mar 24 17:41:39 EDT 2011
On 3/24/11 12:20 PM, g4 at novadsp.com wrote:
> Not that I wish to trample rose patches here :)
What does that mean?
> On 24/03/2011 18:12, Phil Burk wrote:
>> The biggest argument against it is the dynamic memory allocation. Games
>> are almost always memory constrained and you don't want to run out of
>> memory on level 19 after playing for 7 hours straight! Even if you write
>> your own memory allocator you can still run out of memory
>
> Sorry, just don't get this. STL is not going to 'cause' this, it does
> not allocate (or deallocate) blindly. C++ is, after all, C++, not C# nor
> Java - it is deterministic.
I realize that STL will not allocate memory unless you call certain
methods and only under certain circumstances.
> If your STL implementation is running out of
> memory then your implementation is (almost certainly) wrong.
The issue is not that STL is running out of memory. The point is that
your application may run out of memory.
On some systems the memory is limited. Game developers often push these
limits. So running out of memory is not unthinkable. Fragmentation is
also an issue, even with MMUs. The key point here is that if one is
going to run out memory it must happen predictably and as early as
possible. Then it can be discovered and fixed before the game ships. So
game designers generally allocate all their memory up front when a level
loads and avoid allocating anything during game play. This is because
game play is not deterministic. A game may be played for hours and the
possibilities are endless. The last thing they want is to get occasional
out-of-memory errors after hours of random play.
Console game developers are shipping apps that generate hundreds of
millions of dollars in revenue. They don't mess around. They often make
blanket rules like "no memory allocation after initialization". To
enforce this they sometimes require that modules do all their allocation
at once.
Now I realize that PortAudio is not supported on game consoles like PS3.
I just used the PS3 as one example of where STL might be rejected.
Phil Burk
More information about the Portaudio
mailing list