<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Vectors in classes</title>
		<link>http://www.allegro.cc/forums/view/589538</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sun, 14 Jan 2007 02:59:34 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>So far I&#39;ve been mostly programming in C and using allegro for my projects. A while back I decided to try OpenLayer and I really like it. So I figured if I&#39;ll start using OL, I might as well start writing in C++. So I&#39;ve been reading up on it, and I came up with a question that I haven found the answer to: can I use a vector as a member in a class?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kauhiz)</author>
		<pubDate>Sat, 13 Jan 2007 01:15:55 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>vector as in std::vector?<br />Sure.</p><div class="source-code snippet"><div class="inner"><pre><span class="p">#include &lt;vector&gt;</span>
<span class="k1">class</span> meh
<span class="k2">{</span>
  std::vector<span class="k3">&lt;</span> <span class="k1">float</span> <span class="k3">&gt;</span> m_vector<span class="k2">;</span>
<span class="k2">}</span><span class="k2">;</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Trezker)</author>
		<pubDate>Sat, 13 Jan 2007 01:24:57 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Cool, thanks! I just thought that there might be some quirks with the vector allocating memory if I put it into a class.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kauhiz)</author>
		<pubDate>Sat, 13 Jan 2007 01:32:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I do that all the time.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CursedTyrant)</author>
		<pubDate>Sat, 13 Jan 2007 02:31:15 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Kauhiz, actually, I prefer using vectors inside of classes (when array are needed, of course), since they are automatically cleaned up when your object goes out of scope.  It makes debugging SEGFAULTs 10x easier <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (TeamTerradactyl)</author>
		<pubDate>Sat, 13 Jan 2007 03:58:31 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>... As for stuffing complete objects in a vector   DONT !!<br />and maybe you&#39;d better use list.</p><p>Make a vector or list of pointers to your objects</p><p>using namespace std;</p><p>list &lt;myClass *&gt; m_lstItems;
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ariesnl)</author>
		<pubDate>Sat, 13 Jan 2007 05:14:47 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Don&#39;t listen to that. There&#39;s no innate reason why you shouldn&#39;t be putting objects in vectors or lists.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (X-G)</author>
		<pubDate>Sat, 13 Jan 2007 05:18:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I just thought that there might be some quirks with the vector allocating memory if I put it into a class.
</p></div></div><p>
Just make sure that you also clean up the vector - perhaps in the class&#39;s destructor.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Archon)</author>
		<pubDate>Sat, 13 Jan 2007 05:20:45 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Don&#39;t listen to that. There&#39;s no innate reason why you shouldn&#39;t be putting objects in vectors or lists.
</p></div></div><p>



Really ?<br />how about speed when doing a Z sort <img src="http://www.allegro.cc/forums/smileys/rolleyes.gif" alt="::)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ariesnl)</author>
		<pubDate>Sat, 13 Jan 2007 05:21:04 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Just make sure that you also clean up the vector - perhaps in the class&#39;s destructor.
</p></div></div><p>Got it, thanks! <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kauhiz)</author>
		<pubDate>Sat, 13 Jan 2007 05:23:07 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">X-G said:</div><div class="quote"><p>
Don&#39;t listen to that. There&#39;s no innate reason why you shouldn&#39;t be putting objects in vectors or lists.
</p></div></div><p>
</p><div class="quote_container"><div class="title">ariesnl said:</div><div class="quote"><p>
how about speed when doing a Z sort <img src="http://www.allegro.cc/forums/smileys/rolleyes.gif" alt="::)" />
</p></div></div><p>
Well, there wasn&#39;t any mention of Z-sorting. And, he said vectors or lists and you provided a example of a list.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Archon)</author>
		<pubDate>Sat, 13 Jan 2007 05:23:35 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
how about speed when doing a Z sort
</p></div></div><p>What about it? <br />But how about memory fragmentation and having to manually clean up the pointer vector?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (HoHo)</author>
		<pubDate>Sat, 13 Jan 2007 05:24:36 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>it was an example,  pointers in lists ( and vectors) are more efficient.</p><p>It&#39;s a little more work, but it it&#39;s worth it  </p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
What about it?<br />But how about memory fragmentation and having to manually clean up the pointer vector?
</p></div></div><p>

stuffing Objects in a list or a vector won&#39;t help with memory fragmentation.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ariesnl)</author>
		<pubDate>Sat, 13 Jan 2007 05:26:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
stuffing Objects in a list or a vector won&#39;t help with memory fragmentation.
</p></div></div><p>Vector of 10000 pointers to objects will roughly have 10001 separate memory fragments (assuming objects themselves don&#39;t have pointers). Vector of 10000 objects will be in 1 memory fragment. I see a slight difference in numbers. Of cource with linked list things are rather ugly anyways <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /></p><p>I don&#39;t put objects straight to container only when they are massive (&gt;~100 bytes) <i>and</i> when I have to sort them. When I only have massive objects with no(little) sorting or have to sort small objects I put them straight to the container. There is little point in wasting 4(8) bytes per pointer in most cases <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /></p><p>Also when I have to sort a container I would never use a list. Vectors are way more effective when needing to sort. Actually there quite a very few cases when lists should be used in place of vectors.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (HoHo)</author>
		<pubDate>Sat, 13 Jan 2007 05:46:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I recently (as in, yesterday) tried stuffing my T_PAGE object into a vector. It contains the following:</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">struct</span> T_PAGE
<span class="k2">{</span>
  <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>bitmap, <span class="k3">*</span>stencil<span class="k2">;</span>
  <a href="http://www.allegro.cc/manual/PALETTE" target="_blank"><span class="a">PALETTE</span></a> palette<span class="k2">;</span>
  <span class="k1">char</span> <span class="k3">*</span>filename<span class="k2">;</span>
<span class="k2">}</span><span class="k2">;</span>
</pre></div></div><p>

If I tried to store more than one, for some inexplicable reason, pieces of every allocated BITMAP pointer were getting overwritten.</p><p>All I did was switch to storing pointers to T_PAGE objects instead of the objects themselves and my code started working.</p><p>--- Kris Asick (Gemini)<br />--- <a href="http://www.pixelships.com">http://www.pixelships.com</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kris Asick)</author>
		<pubDate>Sat, 13 Jan 2007 06:10:27 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Without any knowledge of your code I&#39;d say you have a memory leak somewhere that tends to overwrite stuff. By moving to pointers you simply overwrite something else and so far it doesn&#39;t show up <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (HoHo)</author>
		<pubDate>Sat, 13 Jan 2007 06:17:25 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I dunno... the only thing that could be wrong is the allocation of the object, but doing T_PAGE() was the only thing the compiler would accept.</p><p>Here&#39;s the original code. Using this code, all the data in the first T_PAGE object gets screwed up when I create the second one.</p><div class="source-code snippet"><div class="inner"><pre>std::vector<span class="k3">&lt;</span>T_PAGE&gt; page<span class="k2">;</span>

<span class="k1">try</span> <span class="k2">{</span> page.push_back<span class="k2">(</span>T_PAGE<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span> <span class="k2">}</span>
<span class="k1">catch</span> <span class="k2">(</span>...<span class="k2">)</span> <span class="k2">{</span> CallErrorHandler<span class="k2">(</span><span class="n">5</span><span class="k2">)</span><span class="k2">;</span> <span class="k2">}</span>
<span class="k1">if</span> <span class="k2">(</span>page<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.Make_Bitmap<span class="k2">(</span>option.xres,option.yres<span class="k2">)</span><span class="k2">)</span> CallErrorHandler<span class="k2">(</span><span class="n">5</span><span class="k2">)</span><span class="k2">;</span>
page<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.Set_Palette<span class="k2">(</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/PALETTE" target="_blank"><span class="a">PALETTE</span></a><span class="k3">*</span><span class="k2">)</span>data<span class="k2">[</span>Default_Palette<span class="k2">]</span>.dat<span class="k2">)</span><span class="k2">;</span>
page<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.accessed_before <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/clear_bitmap" target="_blank"><span class="a">clear_bitmap</span></a><span class="k2">(</span>page<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.bitmap<span class="k2">)</span><span class="k2">;</span>

<span class="k1">try</span> <span class="k2">{</span> page.push_back<span class="k2">(</span>T_PAGE<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span> <span class="k2">}</span>
<span class="k1">catch</span> <span class="k2">(</span>...<span class="k2">)</span> <span class="k2">{</span> CallErrorHandler<span class="k2">(</span><span class="n">5</span><span class="k2">)</span><span class="k2">;</span> <span class="k2">}</span>
<span class="k1">if</span> <span class="k2">(</span>page<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>.Make_Bitmap<span class="k2">(</span>option.xres,option.yres<span class="k2">)</span><span class="k2">)</span> CallErrorHandler<span class="k2">(</span><span class="n">5</span><span class="k2">)</span><span class="k2">;</span>
page<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>.Set_Palette<span class="k2">(</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/PALETTE" target="_blank"><span class="a">PALETTE</span></a><span class="k3">*</span><span class="k2">)</span>data<span class="k2">[</span>Default_Palette<span class="k2">]</span>.dat<span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/clear_bitmap" target="_blank"><span class="a">clear_bitmap</span></a><span class="k2">(</span>page<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>.bitmap<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

And here&#39;s the new code that works perfectly.</p><div class="source-code snippet"><div class="inner"><pre>std::vector<span class="k3">&lt;</span>T_PAGE<span class="k3">*</span><span class="k3">&gt;</span> page<span class="k2">;</span>

<span class="k1">try</span> <span class="k2">{</span> page.push_back<span class="k2">(</span><span class="k1">new</span> T_PAGE<span class="k2">)</span><span class="k2">;</span> <span class="k2">}</span>
<span class="k1">catch</span> <span class="k2">(</span>...<span class="k2">)</span> <span class="k2">{</span> CallErrorHandler<span class="k2">(</span><span class="n">5</span><span class="k2">)</span><span class="k2">;</span> <span class="k2">}</span>
<span class="k1">if</span> <span class="k2">(</span>page<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>Make_Bitmap<span class="k2">(</span>option.xres,option.yres<span class="k2">)</span><span class="k2">)</span> CallErrorHandler<span class="k2">(</span><span class="n">5</span><span class="k2">)</span><span class="k2">;</span>
page<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>Set_Palette<span class="k2">(</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/PALETTE" target="_blank"><span class="a">PALETTE</span></a><span class="k3">*</span><span class="k2">)</span>data<span class="k2">[</span>Default_Palette<span class="k2">]</span>.dat<span class="k2">)</span><span class="k2">;</span>
page<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>accessed_before <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/clear_bitmap" target="_blank"><span class="a">clear_bitmap</span></a><span class="k2">(</span>page<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>bitmap<span class="k2">)</span><span class="k2">;</span>

<span class="k1">try</span> <span class="k2">{</span> page.push_back<span class="k2">(</span><span class="k1">new</span> T_PAGE<span class="k2">)</span><span class="k2">;</span> <span class="k2">}</span>
<span class="k1">catch</span> <span class="k2">(</span>...<span class="k2">)</span> <span class="k2">{</span> CallErrorHandler<span class="k2">(</span><span class="n">5</span><span class="k2">)</span><span class="k2">;</span> <span class="k2">}</span>
<span class="k1">if</span> <span class="k2">(</span>page<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>Make_Bitmap<span class="k2">(</span>option.xres,option.yres<span class="k2">)</span><span class="k2">)</span> CallErrorHandler<span class="k2">(</span><span class="n">5</span><span class="k2">)</span><span class="k2">;</span>
page<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>Set_Palette<span class="k2">(</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/PALETTE" target="_blank"><span class="a">PALETTE</span></a><span class="k3">*</span><span class="k2">)</span>data<span class="k2">[</span>Default_Palette<span class="k2">]</span>.dat<span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/clear_bitmap" target="_blank"><span class="a">clear_bitmap</span></a><span class="k2">(</span>page<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k3">-</span><span class="k3">&gt;</span>bitmap<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

Practically identical.</p><p>--- Kris Asick (Gemini)<br />--- <a href="http://www.pixelships.com">http://www.pixelships.com</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kris Asick)</author>
		<pubDate>Sat, 13 Jan 2007 06:26:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>... except there&#39;s more code that you&#39;re not showing us. What is Make_Bitmap? Set_Palette? What else is hiding in T_PAGE that you&#39;re not showing us?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (X-G)</author>
		<pubDate>Sat, 13 Jan 2007 06:32:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Nothing I haven&#39;t done a million times before:</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="k1">int</span> T_PAGE::Make_Bitmap <span class="k2">(</span><span class="k1">int</span> xres, <span class="k1">int</span> yres<span class="k2">)</span> <span class="c">// Return 1 on failure.</span></td></tr><tr><td class="number">2</td><td><span class="k2">{</span></td></tr><tr><td class="number">3</td><td>  <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>bitmap<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">4</td><td>  <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>stencil<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td>  <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span>bitmap <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span>xres,yres<span class="k2">)</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span> <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">7</td><td>  <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span>stencil <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span>xres,yres<span class="k2">)</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span> <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">8</td><td>  </td></tr><tr><td class="number">9</td><td>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">10</td><td><span class="k2">}</span></td></tr><tr><td class="number">11</td><td>&#160;</td></tr><tr><td class="number">12</td><td><span class="k1">void</span> T_PAGE::Set_Palette <span class="k2">(</span><a href="http://www.allegro.cc/manual/PALETTE" target="_blank"><span class="a">PALETTE</span></a> <span class="k3">*</span>pal<span class="k2">)</span></td></tr><tr><td class="number">13</td><td><span class="k2">{</span></td></tr><tr><td class="number">14</td><td>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_566.html" target="_blank">memcpy</a><span class="k2">(</span><span class="k3">&amp;</span>palette,pal,<span class="k1">sizeof</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/PALETTE" target="_blank"><span class="a">PALETTE</span></a><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td><span class="k2">}</span></td></tr><tr><td class="number">16</td><td>&#160;</td></tr><tr><td class="number">17</td><td>T_PAGE::T_PAGE <span class="k2">(</span><span class="k1">void</span><span class="k2">)</span></td></tr><tr><td class="number">18</td><td><span class="k2">{</span></td></tr><tr><td class="number">19</td><td>  bitmap <span class="k3">=</span> NULL<span class="k2">;</span> stencil <span class="k3">=</span> NULL<span class="k2">;</span> filename <span class="k3">=</span> NULL<span class="k2">;</span></td></tr><tr><td class="number">20</td><td>  accessed_before <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td><span class="k2">}</span></td></tr><tr><td class="number">22</td><td>&#160;</td></tr><tr><td class="number">23</td><td>T_PAGE::~T_PAGE <span class="k2">(</span><span class="k1">void</span><span class="k2">)</span></td></tr><tr><td class="number">24</td><td><span class="k2">{</span></td></tr><tr><td class="number">25</td><td>  <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>bitmap<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">26</td><td>  <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>stencil<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">27</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

Trust me, this part of the code works perfectly. I spent over half an hour checking it before figuring something must be up with the vectors.</p><p>Oh yeah, I renamed &quot;palette&quot; to &quot;pal&quot; at one point. I typed out the class by hand in my first post. <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /></p><p>--- Kris Asick (Gemini)<br />--- <a href="http://www.pixelships.com">http://www.pixelships.com</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kris Asick)</author>
		<pubDate>Sat, 13 Jan 2007 06:40:11 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="source-code snippet"><div class="inner"><pre>T_PAGE::~T_PAGE <span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="k2">{</span>
  <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>bitmap<span class="k2">)</span><span class="k2">;</span>
  <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>stencil<span class="k2">)</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>

Whoops! <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />   What do you think happens when this gets called upon vector resizing? That&#39;s right, bitmaps get destroyed and eventually thrashed. You need copy semantics for this little baby.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (X-G)</author>
		<pubDate>Sat, 13 Jan 2007 14:52:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>X-G is right, and this means you need to implement operator= and copy constructor for T_PAGE.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (tobing)</author>
		<pubDate>Sat, 13 Jan 2007 15:31:04 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>No one told me that in any of the tutorials I was reading, in any of the help files, even here on the forums. No wonder I made that mistake...</p><p>Still, using pointers instead of the objects themselves seems to work, and is probably faster too, so wouldn&#39;t that just be simpler than coding in operator= and copy constructors?</p><p>--- Kris Asick (Gemini)<br />--- <a href="http://www.pixelships.com">http://www.pixelships.com</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kris Asick)</author>
		<pubDate>Sun, 14 Jan 2007 02:01:07 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Using pointers is faster. As discussed, using many single new&#39;s may fragment memory - especially if these memory chunks are allocated and freed in random order, and frequently. There&#39;s no problem if they are all allocated once and then used.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (tobing)</author>
		<pubDate>Sun, 14 Jan 2007 02:59:34 +0000</pubDate>
	</item>
</rss>
