<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Allegro Access Violation while Drawing</title>
		<link>http://www.allegro.cc/forums/view/618417</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Thu, 20 May 2021 18:42:00 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hey guys, I&#39;m trying to use Allegro to draw some shapes for a school project. I got the error: Process returned -1073741819 (0xC0000005). This was the same error I got when I tried to draw bitmaps previously. I borrowed code that my teacher uses for a demo to see if it was just my code that was the problem. I am still getting the same error. From my research, 0xC0000005 seems to be an access violation error. I believe that it is a problem with my computer, what can I do to fix? Thank you.</p><p>Attached below is the code from my teacher that I am using. Other Allegro functions that do not require drawing shapes, such as creating a pop-up or drawing a single pixel work.</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="c">// Here is your first line. You must include the allegro header file or else nothing will work!</span>
<span class="number">  2</span><span class="p">#include &lt;allegro5/allegro.h&gt;// You must include the Allegro Header file</span>
<span class="number">  3</span><span class="p">#include &lt;allegro5/allegro_primitives.h&gt;</span>
<span class="number">  4</span><span class="p">#include &lt;allegro5/allegro_native_dialog.h&gt;</span>
<span class="number">  5</span>
<span class="number">  6</span><span class="c">// lots of colours to choose from</span>
<span class="number">  7</span><span class="p">#define RED     al_map_rgb(230, 25, 75)</span>
<span class="number">  8</span><span class="p">#define GREEN   al_map_rgb(60, 180, 75)</span>
<span class="number">  9</span><span class="p">#define YELLOW   al_map_rgb(255, 225, 25)</span>
<span class="number"> 10</span><span class="p">#define BLUE   al_map_rgb(0, 130, 200)</span>
<span class="number"> 11</span><span class="p">#define ORANGE   al_map_rgb(245, 130, 48)</span>
<span class="number"> 12</span><span class="p">#define PURPLE   al_map_rgb(145, 30, 180)</span>
<span class="number"> 13</span><span class="p">#define CYAN   al_map_rgb(70, 240, 240)</span>
<span class="number"> 14</span><span class="p">#define MAGENTA   al_map_rgb(240, 50, 230)</span>
<span class="number"> 15</span><span class="p">#define LIME   al_map_rgb(210, 245, 60)</span>
<span class="number"> 16</span><span class="p">#define PINK   al_map_rgb(250, 190, 190)</span>
<span class="number"> 17</span><span class="p">#define TEAL   al_map_rgb(0, 128, 128)</span>
<span class="number"> 18</span><span class="p">#define LAVENDER al_map_rgb(230, 190, 255)</span>
<span class="number"> 19</span><span class="p">#define BROWN   al_map_rgb(170, 110, 40)</span>
<span class="number"> 20</span><span class="p">#define BEIGE   al_map_rgb(255, 250, 200)</span>
<span class="number"> 21</span><span class="p">#define MAROON   al_map_rgb(128, 0, 0)</span>
<span class="number"> 22</span><span class="p">#define MINT   al_map_rgb(170, 255, 195)</span>
<span class="number"> 23</span><span class="p">#define OLIVE   al_map_rgb(128, 128, 0)</span>
<span class="number"> 24</span><span class="p">#define CORAL   al_map_rgb(255, 215, 180)</span>
<span class="number"> 25</span><span class="p">#define NAVY   al_map_rgb(0, 0, 128)</span>
<span class="number"> 26</span><span class="p">#define GREY   al_map_rgb(128, 128, 128)</span>
<span class="number"> 27</span><span class="p">#define WHITE   al_map_rgb(255, 255, 255)</span>
<span class="number"> 28</span><span class="p">#define BLACK   al_map_rgb(0, 0, 0)</span>
<span class="number"> 29</span>
<span class="number"> 30</span><span class="k1">const</span> <span class="k1">int</span> <a href="http://www.allegro.cc/manual/SCREEN_W"><span class="a">SCREEN_W</span></a> <span class="k3">=</span> <span class="n">640</span><span class="k2">;</span>       <span class="c">// screen width</span>
<span class="number"> 31</span><span class="k1">const</span> <span class="k1">int</span> <a href="http://www.allegro.cc/manual/SCREEN_H"><span class="a">SCREEN_H</span></a> <span class="k3">=</span> <span class="n">480</span><span class="k2">;</span>       <span class="c">// screen height</span>
<span class="number"> 32</span>
<span class="number"> 33</span><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span>argv<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 34</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display <span class="k3">=</span> nullptr<span class="k2">;</span>
<span class="number"> 35</span>
<span class="number"> 36</span>  <span class="c">// Initialize Allegro</span>
<span class="number"> 37</span>  <a href="http://www.allegro.cc/manual/al_init"><span class="a">al_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 38</span>
<span class="number"> 39</span>  <span class="c">// Initialize display</span>
<span class="number"> 40</span>  display <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_display"><span class="a">al_create_display</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/SCREEN_W"><span class="a">SCREEN_W</span></a>, <a href="http://www.allegro.cc/manual/SCREEN_H"><span class="a">SCREEN_H</span></a><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 41</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>display<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 42</span>      <a href="http://www.allegro.cc/manual/al_show_native_message_box"><span class="a">al_show_native_message_box</span></a><span class="k2">(</span>display, <span class="s">"Error"</span>, <span class="s">"Error"</span>, <span class="s">"Failed to initialize display!"</span>,
<span class="number"> 43</span>                                 nullptr, ALLEGRO_MESSAGEBOX_ERROR<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 44</span>         <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 45</span>  <span class="k2">}</span>
<span class="number"> 46</span>    <a href="http://www.allegro.cc/manual/al_set_window_title"><span class="a">al_set_window_title</span></a><span class="k2">(</span>display, <span class="s">"Allegro Example 8 - Shapes"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 47</span>
<span class="number"> 48</span>  <span class="c">// Initialize primative add on</span>
<span class="number"> 49</span>   <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_init_primitives_addon"><span class="a">al_init_primitives_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 50</span>      <a href="http://www.allegro.cc/manual/al_show_native_message_box"><span class="a">al_show_native_message_box</span></a><span class="k2">(</span>display, <span class="s">"Error"</span>, <span class="s">"Error"</span>, <span class="s">"Failed to initialize primatives addon!"</span>,
<span class="number"> 51</span>                                 nullptr, ALLEGRO_MESSAGEBOX_ERROR<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 52</span>      <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 53</span>  <span class="k2">}</span>
<span class="number"> 54</span>
<span class="number"> 55</span>  <span class="c">// paint rectangle  (x1, y1, x2, y2, colour) - Upper left and lower right points of the rectangle</span>
<span class="number"> 56</span>  <a href="http://www.allegro.cc/manual/al_draw_filled_rectangle"><span class="a">al_draw_filled_rectangle</span></a><span class="k2">(</span><span class="n">100</span>, <span class="n">100</span>, <span class="n">200</span>, <span class="n">150</span>, MAROON<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 57</span>  <a href="http://www.allegro.cc/manual/al_draw_filled_circle"><span class="a">al_draw_filled_circle</span></a><span class="k2">(</span><span class="n">100</span>, <span class="n">100</span>, <span class="n">50</span>, LAVENDER<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 58</span>  <a href="http://www.allegro.cc/manual/al_draw_circle"><span class="a">al_draw_circle</span></a><span class="k2">(</span><span class="n">400</span>, <span class="n">400</span>, <span class="n">80</span>, TEAL, <span class="n">10</span><span class="k2">)</span><span class="k2">;</span>    <span class="c">// last parameter is thickness of line</span>
<span class="number"> 59</span>  <a href="http://www.allegro.cc/manual/al_draw_line"><span class="a">al_draw_line</span></a><span class="k2">(</span><span class="n">10</span>, <span class="n">240</span>, <span class="n">310</span>, <span class="n">250</span>, NAVY, <span class="n">25</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 60</span>
<span class="number"> 61</span>  <span class="c">// display what has been drawn</span>
<span class="number"> 62</span>    <a href="http://www.allegro.cc/manual/al_flip_display"><span class="a">al_flip_display</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 63</span>
<span class="number"> 64</span>    <span class="c">// Wait for a 5 seconds before destroy the dispaly and exit the program.</span>
<span class="number"> 65</span>  <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span><span class="n">5</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 66</span>  <a href="http://www.allegro.cc/manual/al_destroy_display"><span class="a">al_destroy_display</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 67</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 68</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (RickOwensFit)</author>
		<pubDate>Wed, 19 May 2021 22:50:25 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You are saying it works if you comment out the draw functions? Or it doesn&#39;t work at all? </p><p>Do you have a step-by-step debugger to go through each line to find out where it breaks?</p><p>also, when you post code put it inside the code tags please. Makes it easier to read and allegro functions link to the manual (Even though they need updated)
</p><pre>&lt;code&gt;
//source code goes here
&lt;/code&gt;</pre><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (DanielH)</author>
		<pubDate>Wed, 19 May 2021 23:10:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>One thing I noticed is that you&#39;re not calling <a href="https://liballeg.org/a5docs/trunk/native_dialog.html#al_init_native_dialog_addon">`al_init_native_dialog_addon`</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Peter Hull)</author>
		<pubDate>Wed, 19 May 2021 23:51:41 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>But that would only matter if something went wrong creating display or initializing primitives. Correct? Otherwise those calls would never be called to cause issues with native dialog not being initialized.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (DanielH)</author>
		<pubDate>Thu, 20 May 2021 00:06:08 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>DanielH, it is breaking at the draw functions. If I comment out lines 56 through 59 it works perfectly. It creates a window titled &quot;Allegro Example 8 - Shapes&quot;, waits, then closes. From my previous work with Allegro, I can create pop-ups and draw individual pixels as well.</p><p>I believe that the problem lies with my computer, as this code works on my teacher&#39;s.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (RickOwensFit)</author>
		<pubDate>Thu, 20 May 2021 00:21:43 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You&#39;re not checking the return value of al_init. If it fails, it means your runtime version of allegro is not the same as your compile time allegro. Delete old copies of allegro and relink.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Thu, 20 May 2021 17:23:06 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yes, get a clean copy of Allegro. Your code is fine.</p><p><span class="remote-thumbnail"><span class="json">{"name":"612951","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/d\/2\/d2947eb60dfa50439cdb105ce1527fbf.png","w":648,"h":524,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/d\/2\/d2947eb60dfa50439cdb105ce1527fbf"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/d/2/d2947eb60dfa50439cdb105ce1527fbf-240.jpg" alt="612951" width="240" height="194" /></span>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (DanielH)</author>
		<pubDate>Thu, 20 May 2021 18:42:00 +0000</pubDate>
	</item>
</rss>
