<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Win XP zu doof für malloc???]]></title><description><![CDATA[<p>Hi Leute...</p>
<p>ich verlier hier langsam die Nerven. Folgendes: Ich schreibe einen Editor, der ein RichEdit-Feld verwendet. Dabei soll bei jedem Zeichen die komplette Zeile mit einer Funktion in den char*-Buffer &quot;line&quot; kopiert werden. Ist doch eigentlich ein &quot;Piece-of-Cake&quot;.<br />
Mein Problem ist nun aber folgendes: Mein Programm funktioniert unter Windows 98 und NT OHNE Probleme. Wenn ich aber unter Windows XP versuche, 13 Bytes zu allokieren (d.h. wenn ich 12 Zeichen in einer Zeile eingebe) dann stürzt das Programm mit einer Access-Violation ab, und zwar genau an der stelle wo mein malloc() ist. ICH VERSTEHE DAS NICHT!!!!!!!!!!!!! Dann hab ich's mal mit einem new probiert ... klappt genauso toll ... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
<p>Wisst ihr vielleicht, warum Win XP zu doof für malloc ist? Und was mich noch mehr stört: In jedem meiner anderen Projekte wird ein malloc() mit mehr als 32kb durchgeführt, und er macht keine mucken. Aber hier ist er nichtmal in der Lage, 13 Bytes zu allokieren ... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
<p>Mein Programm (also die Stelle die entscheidend ist):</p>
<pre><code class="language-cpp">//Get length and position of the current line
        int lineStart = SendMessage(hEdit, EM_LINEINDEX, codeLine, 0);
        int lineEnd = lineStart + SendMessage(hEdit, EM_LINELENGTH, lineStart, 0);

        //HIER SCHMIERT ER AB, wenn ((lineEnd - lineStart) + 1) den Wert 13 hat
        char* line = (char*)malloc(((lineEnd - lineStart) + 1) * sizeof(char));

        SendMessage(hEdit, EM_GETLINE, (WPARAM)codeLine, (LPARAM)line);
        line[(lineEnd - lineStart)] = '\0';
</code></pre>
<p>Ich weis einfach nicht mehr weiter ...</p>
<p>Gruss,<br />
~code_pilot</p>
<p>PS: Bevor ichs vergesse: Ja, line wird nach Funktionsende wieder mit free() freigegeben...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/81802/win-xp-zu-doof-für-malloc</link><generator>RSS for Node</generator><lastBuildDate>Mon, 13 Apr 2026 19:09:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/81802.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 04 Aug 2004 12:49:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Win XP zu doof für malloc??? on Wed, 04 Aug 2004 12:53:52 GMT]]></title><description><![CDATA[<p>Hi Leute...</p>
<p>ich verlier hier langsam die Nerven. Folgendes: Ich schreibe einen Editor, der ein RichEdit-Feld verwendet. Dabei soll bei jedem Zeichen die komplette Zeile mit einer Funktion in den char*-Buffer &quot;line&quot; kopiert werden. Ist doch eigentlich ein &quot;Piece-of-Cake&quot;.<br />
Mein Problem ist nun aber folgendes: Mein Programm funktioniert unter Windows 98 und NT OHNE Probleme. Wenn ich aber unter Windows XP versuche, 13 Bytes zu allokieren (d.h. wenn ich 12 Zeichen in einer Zeile eingebe) dann stürzt das Programm mit einer Access-Violation ab, und zwar genau an der stelle wo mein malloc() ist. ICH VERSTEHE DAS NICHT!!!!!!!!!!!!! Dann hab ich's mal mit einem new probiert ... klappt genauso toll ... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
<p>Wisst ihr vielleicht, warum Win XP zu doof für malloc ist? Und was mich noch mehr stört: In jedem meiner anderen Projekte wird ein malloc() mit mehr als 32kb durchgeführt, und er macht keine mucken. Aber hier ist er nichtmal in der Lage, 13 Bytes zu allokieren ... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
<p>Mein Programm (also die Stelle die entscheidend ist):</p>
<pre><code class="language-cpp">//Get length and position of the current line
        int lineStart = SendMessage(hEdit, EM_LINEINDEX, codeLine, 0);
        int lineEnd = lineStart + SendMessage(hEdit, EM_LINELENGTH, lineStart, 0);

        //HIER SCHMIERT ER AB, wenn ((lineEnd - lineStart) + 1) den Wert 13 hat
        char* line = (char*)malloc(((lineEnd - lineStart) + 1) * sizeof(char));

        SendMessage(hEdit, EM_GETLINE, (WPARAM)codeLine, (LPARAM)line);
        line[(lineEnd - lineStart)] = '\0';
</code></pre>
<p>Ich weis einfach nicht mehr weiter ...</p>
<p>Gruss,<br />
~code_pilot</p>
<p>PS: Bevor ichs vergesse: Ja, line wird nach Funktionsende wieder mit free() freigegeben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/575120</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/575120</guid><dc:creator><![CDATA[code_pilot]]></dc:creator><pubDate>Wed, 04 Aug 2004 12:53:52 GMT</pubDate></item><item><title><![CDATA[Reply to Win XP zu doof für malloc??? on Wed, 04 Aug 2004 12:54:33 GMT]]></title><description><![CDATA[<p>bloß nicht den Fehler bei dir suchen - es sind immer die anderen schuld.</p>
<p>*lol* -&gt; Troll</p>
]]></description><link>https://www.c-plusplus.net/forum/post/575128</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/575128</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Wed, 04 Aug 2004 12:54:33 GMT</pubDate></item><item><title><![CDATA[Reply to Win XP zu doof für malloc??? on Wed, 04 Aug 2004 12:56:55 GMT]]></title><description><![CDATA[<p>@shade of mine: Hab ich das gesagt? Nur frage ich mich, warum mein scheiss Programm unter 98 wunderbar funkt, aber Windows XP keine 13 bytes allokiert, und malloc dann abschmiert. WARUM??? Ich sehe keinen Fehler. Ich kriege nur den tollen Programmabsturz.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/575131</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/575131</guid><dc:creator><![CDATA[code_pilot]]></dc:creator><pubDate>Wed, 04 Aug 2004 12:56:55 GMT</pubDate></item><item><title><![CDATA[Reply to Win XP zu doof für malloc??? on Wed, 04 Aug 2004 13:00:54 GMT]]></title><description><![CDATA[<p>Wenn malloc abstürzt, liegt das so gut wie immer daran, dass der Heap zerschossen ist. Was wiederum so gut wie immer dadurch verursacht wurde, dass man irgendwo über einen allozierten Block hinaus geschrieben hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/575137</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/575137</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Wed, 04 Aug 2004 13:00:54 GMT</pubDate></item><item><title><![CDATA[Reply to Win XP zu doof für malloc??? on Wed, 04 Aug 2004 13:13:52 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/904">@bashar</a>: Hmmm ... du hattest wohl recht, denn SO gehts:</p>
<pre><code class="language-cpp">line = (char*) malloc(((lineEnd - lineStart) + 2) * sizeof(char));
</code></pre>
<p>Aber was war nun der Grund dafür, weil ich nichts in den Index &quot;lineEnd - lineStart + 1&quot; des Arrays reinschreibe... zwar nach &quot;lineEnd - lineStart&quot; aber nicht einen drüber ... und warum schmiert er unter Win 98/NT nicht ab? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>Öhm ... liegt das vielleicht an dem &quot;\r\n&quot; am Ende der Zeile im RichEdit?</p>
<p>Danke &amp; Gruss,<br />
~code_pilot</p>
]]></description><link>https://www.c-plusplus.net/forum/post/575156</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/575156</guid><dc:creator><![CDATA[code_pilot]]></dc:creator><pubDate>Wed, 04 Aug 2004 13:13:52 GMT</pubDate></item><item><title><![CDATA[Reply to Win XP zu doof für malloc??? on Wed, 04 Aug 2004 16:18:25 GMT]]></title><description><![CDATA[<p>Hmm, das ergibt keinen Sinn.<br />
EM_LINELENGTH müsste eigentlich auch nen Zeilenumbruch mitberücksichtigen wenn es EM_GETLINE tut...</p>
<p>...schmiert denn malloc() ab oder der Code danach ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/575312</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/575312</guid><dc:creator><![CDATA[geeky]]></dc:creator><pubDate>Wed, 04 Aug 2004 16:18:25 GMT</pubDate></item><item><title><![CDATA[Reply to Win XP zu doof für malloc??? on Wed, 04 Aug 2004 20:21:05 GMT]]></title><description><![CDATA[<p>hi geeky <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>er schmierte genau beim malloc() ab... naja jetzt geht es ja, wenn ich also + 2 mache anstatt + 1, nur unter Win98 gings halt mit dem + 1 (weil ich das Nullterminierungszeichen natürlich einbezogen hatte). Hmmm ... naja was solls <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> es geht ja jetzt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /> ...</p>
<p>Gruss,<br />
~code_pilot</p>
]]></description><link>https://www.c-plusplus.net/forum/post/575480</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/575480</guid><dc:creator><![CDATA[code_pilot]]></dc:creator><pubDate>Wed, 04 Aug 2004 20:21:05 GMT</pubDate></item></channel></rss>