<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://cegui.org/wiki/index.php?action=history&amp;feed=atom&amp;title=Memory_Allocation</id>
		<title>Memory Allocation - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://cegui.org/wiki/index.php?action=history&amp;feed=atom&amp;title=Memory_Allocation"/>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=Memory_Allocation&amp;action=history"/>
		<updated>2026-04-12T22:27:58Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.24.1</generator>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=Memory_Allocation&amp;diff=5513&amp;oldid=prev</id>
		<title>Ident at 18:36, 4 September 2014</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=Memory_Allocation&amp;diff=5513&amp;oldid=prev"/>
				<updated>2014-09-04T18:36:04Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 18:36, 4 September 2014&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{VersionBadge|0.8}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{VersionBadge|0.8}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;CEGUI offers custom memory allocators in version 0.8. Starting with version 1.0 all Custom Allocators are removed again. The performance benefits mentioned in this article have meanwhile become neglectable.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;b&amp;gt;&lt;/ins&gt;CEGUI offers custom memory allocators in version 0.8. Starting with version 1.0 all Custom Allocators are removed again. The performance benefits mentioned in this article have meanwhile become neglectable &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;in new operating systems such as Windows 7&lt;/ins&gt;.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/b&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The 0.8 custom allocator feature allows you to custom allocate all CEGUI classes not using system heap at all. Preliminary tests with nedmalloc show ~40% performance increase when loading layouts. Other than that CEGUI doesn't allocate and deallocate at runtime so performance difference is negligible once everything is loaded. The main reason for all this hassle and increased code unreadability (new vs CEGUI_NEW_AO) is avoiding the use of system heap, not performance benefits (these are just a nice side effect). Avoiding system heap is apparently (as this was requested by multiple users) needed for games on consoles and PCs.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The 0.8 custom allocator feature allows you to custom allocate all CEGUI classes not using system heap at all. Preliminary tests with nedmalloc show ~40% performance increase when loading layouts. Other than that CEGUI doesn't allocate and deallocate at runtime so performance difference is negligible once everything is loaded. The main reason for all this hassle and increased code unreadability (new vs CEGUI_NEW_AO) is avoiding the use of system heap, not performance benefits (these are just a nice side effect). Avoiding system heap is apparently (as this was requested by multiple users) needed for games on consoles and PCs.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ident</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=Memory_Allocation&amp;diff=5512&amp;oldid=prev</id>
		<title>Ident at 18:35, 4 September 2014</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=Memory_Allocation&amp;diff=5512&amp;oldid=prev"/>
				<updated>2014-09-04T18:35:28Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 18:35, 4 September 2014&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{VersionBadge|0.8}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{VersionBadge|0.8}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;CEGUI offers custom memory allocators &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;in starting &lt;/del&gt;in version 0.8 &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;(which is yet to be released)&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;This &lt;/del&gt;allows you to custom allocate all CEGUI classes not using system heap at all. Preliminary tests with nedmalloc show ~40% performance increase when loading layouts. Other than that CEGUI doesn't allocate and deallocate at runtime so performance difference is negligible once everything is loaded. The main reason for all this hassle and increased code unreadability (new vs CEGUI_NEW_AO) is avoiding the use of system heap, not performance benefits (these are just a nice side effect). Avoiding system heap is apparently (as this was requested by multiple users) needed for games on consoles and PCs.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;CEGUI offers custom memory allocators in version 0.8. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Starting with version 1.0 all Custom Allocators are removed again. The performance benefits mentioned in this article have meanwhile become neglectable.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;The 0.8 custom allocator feature &lt;/ins&gt;allows you to custom allocate all CEGUI classes not using system heap at all. Preliminary tests with nedmalloc show ~40% performance increase when loading layouts. Other than that CEGUI doesn't allocate and deallocate at runtime so performance difference is negligible once everything is loaded. The main reason for all this hassle and increased code unreadability (new vs CEGUI_NEW_AO) is avoiding the use of system heap, not performance benefits (these are just a nice side effect). Avoiding system heap is apparently (as this was requested by multiple users) needed for games on consoles and PCs.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Features ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Features ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ident</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=Memory_Allocation&amp;diff=3588&amp;oldid=prev</id>
		<title>Kulik: initial ramblings</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=Memory_Allocation&amp;diff=3588&amp;oldid=prev"/>
				<updated>2010-12-28T22:45:09Z</updated>
		
		<summary type="html">&lt;p&gt;initial ramblings&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{VersionBadge|0.8}}&lt;br /&gt;
&lt;br /&gt;
CEGUI offers custom memory allocators in starting in version 0.8 (which is yet to be released). This allows you to custom allocate all CEGUI classes not using system heap at all. Preliminary tests with nedmalloc show ~40% performance increase when loading layouts. Other than that CEGUI doesn't allocate and deallocate at runtime so performance difference is negligible once everything is loaded. The main reason for all this hassle and increased code unreadability (new vs CEGUI_NEW_AO) is avoiding the use of system heap, not performance benefits (these are just a nice side effect). Avoiding system heap is apparently (as this was requested by multiple users) needed for games on consoles and PCs.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
Instead of spoon feeding you the implementation merely allows you to delegate allocation. It's inspired by Ogre and allows very easy delegation to Ogre's allocators (included in CEGUIMemoryOgreAllocator.h). See CEGUIMemoryStdAllocator.h for base code for your own sophisticated allocators.&lt;br /&gt;
&lt;br /&gt;
=== Supported allocation schemes (stock) ===&lt;br /&gt;
* No custom allocation (new, delete, new [], delete [])&lt;br /&gt;
* Std allocator (malloc, free)&lt;br /&gt;
* Ogre allocator (uses Ogre's allocation schemes)&lt;br /&gt;
(It is very easy to add more allocators though, see the Std allocator for base code)&lt;br /&gt;
&lt;br /&gt;
== How does this concern end users (developers) of the library ==&lt;br /&gt;
If you don't care about allocation and are OK with using the system heap (this should hopefully be the majority), everything stays the same. &amp;quot;new&amp;quot; works the same as CEGUI_NEW_AO, CEGUI_NEW_PT and &amp;quot;new []&amp;quot; is the same as CEGUI_NEW_ARRAY_PT. The same applies to delete counterparts.&lt;br /&gt;
&lt;br /&gt;
If you plan to use custom allocators you have to use CEGUI_NEW_AO (new allocated object) and CEGUI_DELETE_AO (delete allocated object) in symmetric pairs to allocate everything that is inherited from AllocatedObject&amp;lt;T&amp;gt; from the CEGUI namespace. Unless you delve deep into the codebase you shouldn't encounter CEGUI_NEW_PT (new primitive type), CEGUI_DELETE_PT (delete primitive type) and their array variants (CEGUI_NEW_ARRAY_PT, CEGUI_DELETE_ARRAY_PT).&lt;br /&gt;
&lt;br /&gt;
== Implementation details ==&lt;br /&gt;
Most classes are inherited from AllocatedObject&amp;lt;TheClass&amp;gt;. This base class does the dirty work of overloading new and delete for given class. The overloaded new and delete operators call allocator configured to work with given class.&lt;br /&gt;
&lt;br /&gt;
For classes/types where this can't be done (mostly &amp;quot;primitive types&amp;quot;) we use CEGUI_NEW_PT and supply desired allocator as a parameter to that macro. Same with CEGUI_DELETE_PT and their array variants.&lt;/div&gt;</summary>
		<author><name>Kulik</name></author>	</entry>

	</feed>