<?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[Kleines Speicherproblem bzw malloc Verständnis]]></title><description><![CDATA[<p>Hallöchen.</p>
<p>Ich hätte eine kleine Frage zu folgemdem Code-Schnipsel:</p>
<pre><code class="language-cpp">bool checkOP (MString *Sender) {    
  char *query;
  MYSQL_RES *res;
  MYSQL_ROW row;
  query=(char*)malloc(255);
  sprintf(query, &quot;select * from operatorenliste where operator='%s';&quot;,Sender-&gt;print());  
  res=SQLGetCommand(query);
  if ((mysql_fetch_row(res)&gt;0)||(*Sender==&quot;abcde&quot;)) return(1);
  MString x;
  x=&quot;/w &quot;;
  x=x+Sender-&gt;print();
  x=x+&quot; Du bist nicht berechtigt diesen Befehl ausführen zu lassen.&quot;;
  ChatBot.say(x.print());
  free (query);
  return(0);
}
</code></pre>
<p>Irgendwie wird bei dem Schnipsel der Speicher nicht wieder freigegeben.</p>
<p>Müsste ich quasi hingehen und in der main function einmal den Speicher für malloc bestimmen und dann in jedem void() wieder re-alloc(ieren) :)?<br />
Oder ist das ganz normal, dass der Speicher mit 16kb belegt wird und dann nicht gelöscht wird? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Für eine kleine Hilfe bedanke ich mich im voraus.</p>
<p>Gruß,<br />
SKB</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/186397/kleines-speicherproblem-bzw-malloc-verständnis</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 09:05:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/186397.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 08 Jul 2007 14:01:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kleines Speicherproblem bzw malloc Verständnis on Sun, 08 Jul 2007 14:02:34 GMT]]></title><description><![CDATA[<p>Hallöchen.</p>
<p>Ich hätte eine kleine Frage zu folgemdem Code-Schnipsel:</p>
<pre><code class="language-cpp">bool checkOP (MString *Sender) {    
  char *query;
  MYSQL_RES *res;
  MYSQL_ROW row;
  query=(char*)malloc(255);
  sprintf(query, &quot;select * from operatorenliste where operator='%s';&quot;,Sender-&gt;print());  
  res=SQLGetCommand(query);
  if ((mysql_fetch_row(res)&gt;0)||(*Sender==&quot;abcde&quot;)) return(1);
  MString x;
  x=&quot;/w &quot;;
  x=x+Sender-&gt;print();
  x=x+&quot; Du bist nicht berechtigt diesen Befehl ausführen zu lassen.&quot;;
  ChatBot.say(x.print());
  free (query);
  return(0);
}
</code></pre>
<p>Irgendwie wird bei dem Schnipsel der Speicher nicht wieder freigegeben.</p>
<p>Müsste ich quasi hingehen und in der main function einmal den Speicher für malloc bestimmen und dann in jedem void() wieder re-alloc(ieren) :)?<br />
Oder ist das ganz normal, dass der Speicher mit 16kb belegt wird und dann nicht gelöscht wird? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Für eine kleine Hilfe bedanke ich mich im voraus.</p>
<p>Gruß,<br />
SKB</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1320743</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320743</guid><dc:creator><![CDATA[SKB]]></dc:creator><pubDate>Sun, 08 Jul 2007 14:02:34 GMT</pubDate></item><item><title><![CDATA[Reply to Kleines Speicherproblem bzw malloc Verständnis on Sun, 08 Jul 2007 14:03:35 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">free (query);
</code></pre>
<p>Wird doch freigegeben? Oder was meinst du?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1320746</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320746</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Sun, 08 Jul 2007 14:03:35 GMT</pubDate></item><item><title><![CDATA[Reply to Kleines Speicherproblem bzw malloc Verständnis on Sun, 08 Jul 2007 14:08:40 GMT]]></title><description><![CDATA[<p>Hey, danke für die schnelle Antwort.<br />
Wenn ich nebenher den Taskmanager laufen lasse, dann zeigt er mir die Erhöhung um 16kb an-wechselt aber dann nicht wieder in den ursprünglichen Wert.</p>
<p>Was ich meine <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="🙂"
    /> Das Prog nimmt 5024kb Speicher ein. Ich lasse den Befehl ausführen und des Prog hat dann 5040kb Speicher (laut Taskmanager). Das wäre ja dann, wenn ich den Befehl 100 Mal ausführen lasse, ein zuwachs von 1600kb. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1320750</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320750</guid><dc:creator><![CDATA[SKB]]></dc:creator><pubDate>Sun, 08 Jul 2007 14:08:40 GMT</pubDate></item><item><title><![CDATA[Reply to Kleines Speicherproblem bzw malloc Verständnis on Sun, 08 Jul 2007 14:52:34 GMT]]></title><description><![CDATA[<p>SKB schrieb:</p>
<blockquote>
<p>Hey, danke für die schnelle Antwort.<br />
Wenn ich nebenher den Taskmanager laufen lasse, dann zeigt er mir die Erhöhung um 16kb an-wechselt aber dann nicht wieder in den ursprünglichen Wert.</p>
<p>Was ich meine <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="🙂"
    /> Das Prog nimmt 5024kb Speicher ein. Ich lasse den Befehl ausführen und des Prog hat dann 5040kb Speicher (laut Taskmanager). Das wäre ja dann, wenn ich den Befehl 100 Mal ausführen lasse, ein zuwachs von 1600kb. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>Grundsätzlich ob irgendwo ein Leak ist oder nicht, wirst du es nicht unbedingt am Taskmanager festmachen können. Unter Windows wird teilweise der einem Prozess zugeordnete Speicher erst versetzt aufgeräumt. Sprich Speicherzuwachs kann, muss aber nicht ein Leak sein. Die genauen Ablaufe dürfen dir hier aber besser OS-Spezialisten nennen können <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="😉"
    /></p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1320771</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320771</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Sun, 08 Jul 2007 14:52:34 GMT</pubDate></item><item><title><![CDATA[Reply to Kleines Speicherproblem bzw malloc Verständnis on Sun, 08 Jul 2007 14:59:07 GMT]]></title><description><![CDATA[<p>Ah, ok. Danke, Andre.<br />
Also könnte ich alle meine void's, die solch einen malloc und free benutzen genau so schreiben, wie ich es eben getan habe, ja? Windows gaukelt mir dann also nur einen vor, dass der Speicher nicht freigeben wurde?</p>
<p>Ich hätte noch ne kleine allgemeine Frage dazu:</p>
<p>Wieso kann ich mein Projekt eigentlich nicht &quot;einfach so&quot; von Dev C++ von Bloodshed in MS Visual Studio packen? Visual Studio meckert z.B. ständig bei &quot;sprintf&quot; ich solle es in sprintf_s ändern <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="😮"
    /> bzw kann es mit der mysql.h auch nix anfangen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Thx <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1320777</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320777</guid><dc:creator><![CDATA[SKB]]></dc:creator><pubDate>Sun, 08 Jul 2007 14:59:07 GMT</pubDate></item><item><title><![CDATA[Reply to Kleines Speicherproblem bzw malloc Verständnis on Sun, 08 Jul 2007 15:11:29 GMT]]></title><description><![CDATA[<p>SKB schrieb:</p>
<blockquote>
<p>Hallöchen.</p>
<p>Ich hätte eine kleine Frage zu folgemdem Code-Schnipsel:</p>
<p>[cpp]<br />
bool checkOP (MString *Sender) {<br />
char *query;<br />
MYSQL_RES <em>res;<br />
MYSQL_ROW row;<br />
query=(char</em>)malloc(255);<br />
sprintf(query, &quot;select * from operatorenliste where operator='%s';&quot;,Sender-&gt;print());<br />
res=SQLGetCommand(query);<br />
if ((mysql_fetch_row(res)&gt;0)||(*Sender==&quot;abcde&quot;))<br />
return(1); <strong>// Hier wird die Funktion verlassen und der Speicher nicht freigegeben</strong><br />
MString x;<br />
x=&quot;/w &quot;;<br />
x=x+Sender-&gt;print();<br />
x=x+&quot; Du bist nicht berechtigt diesen Befehl ausführen zu lassen.&quot;;<br />
ChatBot.say(x.print());<br />
free (query);<br />
return(0);<br />
}<br />
[/cpp]</p>
<p>Irgendwie wird bei dem Schnipsel der Speicher nicht wieder freigegeben.</p>
<p>Müsste ich quasi hingehen und in der main function einmal den Speicher für malloc bestimmen und dann in jedem void() wieder re-alloc(ieren) :)?<br />
Oder ist das ganz normal, dass der Speicher mit 16kb belegt wird und dann nicht gelöscht wird? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Für eine kleine Hilfe bedanke ich mich im voraus.</p>
<p>Gruß,<br />
SKB</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1320786</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320786</guid><dc:creator><![CDATA[willy]]></dc:creator><pubDate>Sun, 08 Jul 2007 15:11:29 GMT</pubDate></item><item><title><![CDATA[Reply to Kleines Speicherproblem bzw malloc Verständnis on Sun, 08 Jul 2007 15:22:03 GMT]]></title><description><![CDATA[<p>SKB schrieb:</p>
<blockquote>
<p>Also könnte ich alle meine void's, die solch einen malloc und free benutzen genau so schreiben, wie ich es eben getan habe, ja?</p>
</blockquote>
<p>Solange du alles was du mit malloc allokierst auch mit free freigibst, kannst du dies machen (Auch wenn es eher C als C++ Code ist, und ich eher die C++ Konstrukte new/delete vorziehe, es sei den es stellt sich an der Stelle als Flaschenhals heraus).</p>
<p>SKB schrieb:</p>
<blockquote>
<p>Windows gaukelt mir dann also nur einen vor, dass der Speicher nicht freigeben wurde?</p>
</blockquote>
<p>Windows gaukelt dir garnichts vor, es hat tatsächlich für den Prozess den Speicher reserviert. Wann die entgültige Freigabe des Adressraumes durchgeführt wird, ist aber Aufgabe des Betriebssystems, der Taskmanager bekommt es nicht unbedingt mit ob der Speicher als solches &quot;freigegeben&quot; ist. Wenn der Speicher ständig weiterwächst würde ich aber irgendwann dennoch Gedanken machen...</p>
<p>Zudem hast du doch ein Speicherleak...<br />
if ((mysql_fetch_row(res)&gt;0)||(*Sender==&quot;abcde&quot;)) return(1);</p>
<p>Wenn du hier rein läufst wird das free nicht mehr durchgeführt!</p>
<p>SKB schrieb:</p>
<blockquote>
<p>Wieso kann ich mein Projekt eigentlich nicht &quot;einfach so&quot; von Dev C++ von Bloodshed in MS Visual Studio packen? Visual Studio meckert z.B. ständig bei &quot;sprintf&quot; ich solle es in sprintf_s ändern <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="😮"
    /> bzw kann es mit der mysql.h auch nix anfangen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
</blockquote>
<p>1. VC++ 2005 verhält sich von den Standardbibliotheken vorsichiger als der Standard (An sich ist die &quot;sichere&quot; Variante okay, aber am Ziel vorbeigeschossen). Es hat Funktionen bereitgestellt die &quot;sicherer&quot; sind als die normalen, sofern du weitgehend portabel schreiben willst (was ich z.B. vorziehe) ist dies aber etwas das ich ignorieren würde. Man kann Warnungen auch deaktivieren, was man (wie in dem Fall) aber nur bewusst tun sollte (Linke immer auf höchster Warnstufe, und schalte nur dann Warnungen aus wenn du dir über die Konsequenzen bewusst bist, und bereit bist diese zu tragen).</p>
<p>Lass raten: Warnung 4996 (Ich stelle sie grad für eine externe Bibliothek aus).</p>
<p>2. mysql.h ist kein Standardheader, demzufolge muss dieser VC++ auch bekannt gemacht werden (sprich: Inkludeverzeichnis bekannt geben).</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1320792</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320792</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Sun, 08 Jul 2007 15:22:03 GMT</pubDate></item><item><title><![CDATA[Reply to Kleines Speicherproblem bzw malloc Verständnis on Sun, 08 Jul 2007 16:17:10 GMT]]></title><description><![CDATA[<p>Danke danke danke <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>Also, ich glaube, ich bleibe dann erstmal bei dem Bloodshed. Da die Anwendungen nur für mich sind kann ich damit besser ausprobieren <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>Habe den Code nun einmal umgebaut bzw erweitert. So könnte ich ihn dann lassen?</p>
<pre><code class="language-cpp">bool checkOP (MString *Sender) {    
  char *query = new char[100];
  MYSQL_RES *res;
  MYSQL_ROW row;
  sprintf(query, &quot;select * from operatorenliste where operator='%s';&quot;,Sender-&gt;print());  
  res=SQLGetCommand(query);
  if ((mysql_fetch_row(res)&gt;0)||(*Sender==&quot;abcde&quot;))
  delete [] query;
  return(1);
  MString x;
  x=&quot;/w &quot;;
  x=x+Sender-&gt;print();
  x=x+&quot; Du bist nicht berechtigt diesen Befehl ausführen zu lassen.&quot;;
  ChatBot.say(x.print());
  delete [] query;
  return(0);
}
</code></pre>
<p>Gruß,<br />
SKB</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1320827</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320827</guid><dc:creator><![CDATA[SKB]]></dc:creator><pubDate>Sun, 08 Jul 2007 16:17:10 GMT</pubDate></item><item><title><![CDATA[Reply to Kleines Speicherproblem bzw malloc Verständnis on Sun, 08 Jul 2007 16:21:15 GMT]]></title><description><![CDATA[<p>warum willst du dein query überhaupt auf dem heap mit malloc/new erstellen? in deinem falle reicht doch eine einfache stack-variable:</p>
<p>char query[100];</p>
<p>die wird automatisch ferigegen, da brauchst du dich gar ncit drum kümmern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1320834</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320834</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Sun, 08 Jul 2007 16:21:15 GMT</pubDate></item><item><title><![CDATA[Reply to Kleines Speicherproblem bzw malloc Verständnis on Sun, 08 Jul 2007 16:24:29 GMT]]></title><description><![CDATA[<p>Ah, ok.</p>
<p>Also dann so?</p>
<pre><code class="language-cpp">bool checkOP (MString *Sender) {    
  char query [100];
  MYSQL_RES *res;
  MYSQL_ROW row;
  sprintf(query, &quot;select * from operatorenliste where operator='%s';&quot;,Sender-&gt;print());
</code></pre>
<p>dann noch das delete [] raus und gut ist, ja?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1320838</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320838</guid><dc:creator><![CDATA[SKB]]></dc:creator><pubDate>Sun, 08 Jul 2007 16:24:29 GMT</pubDate></item><item><title><![CDATA[Reply to Kleines Speicherproblem bzw malloc Verständnis on Sun, 08 Jul 2007 16:33:30 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">...
  if ((mysql_fetch_row(res)&gt;0)||(*Sender==&quot;abcde&quot;))
  delete [] query;
  return(1);
...
</code></pre>
<p>Jetzt wird das delete[] beim if-Fall ausgeführt nicht aber das return. Zum einen, wie angemerkt kasst du hier auch mit einem normalen Array arbeiten, zum anderen solltest du Klammern...<br />
Nachtrag: Bzw. das return wird nun immer ausgeführt, dein Compiler sollte wenn er gut ist meckern das es &quot;unreachable code&quot; gibt...</p>
<pre><code class="language-cpp">...
  if ((mysql_fetch_row(res)&gt;0)||(*Sender==&quot;abcde&quot;))
  {
    delete [] query;
    return(1);
  }
...
</code></pre>
<p>Einrücken würde ich dir auch empfehlen...</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1320845</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320845</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Sun, 08 Jul 2007 16:33:30 GMT</pubDate></item><item><title><![CDATA[Reply to Kleines Speicherproblem bzw malloc Verständnis on Sun, 08 Jul 2007 16:39:05 GMT]]></title><description><![CDATA[<p>Ich habe es nun so geschrieben:</p>
<pre><code class="language-cpp">bool checkOP (MString *Sender) {    
  char query [100];
  MYSQL_RES *res;
  MYSQL_ROW row;
  sprintf(query, &quot;select * from operatorenliste where operator='%s';&quot;,Sender-&gt;print());  
  res=SQLGetCommand(query);
  if ((mysql_fetch_row(res)&gt;0)||(*Sender==&quot;abcde&quot;)) {
     return(1);
  } else {
  MString x;
  x = &quot;/w &quot;;
  x = x + Sender-&gt;print();
  x = x + &quot; Du bist nicht berechtigt diesen Befehl ausführen zu lassen.&quot;;
  ChatBot.say(x.print());
  return(0);
  }
}
</code></pre>
<p>Was ist eigentlich, wenn ich in dem void noch ein anderes query ausführen möchte? Kann ich dann einfach das char query[100]; neu füllen? Oder erstelle ich dann einfach ein neues?</p>
<p>Gruß,<br />
SKB</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1320847</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320847</guid><dc:creator><![CDATA[SKB]]></dc:creator><pubDate>Sun, 08 Jul 2007 16:39:05 GMT</pubDate></item><item><title><![CDATA[Reply to Kleines Speicherproblem bzw malloc Verständnis on Sun, 08 Jul 2007 17:43:44 GMT]]></title><description><![CDATA[<p>Also das mit dem Einrücken solltest du noch lernen, üblich sind zum Beispiel die drei folgenden Stile:</p>
<pre><code class="language-cpp">int main()
{
  ...
  if(irgendwas)
  {
    ...
  }
  else
  {
    ...
  }
  ...
}

int main()
{
  ...
  if(irgendwas)
    {
    ...
    }
  else
    {
    ...
    }
  ...
}

int main() {
  ...
  if(irgendwas) {
    ...
  } else {
    ...
  }
  ...
}
</code></pre>
<p>Unabhängig was du machst, Einrücken erleichtert das Lesen, du solltest aber versuchen im Stil konsistent zu bleiben. Man findet schneller heraus wozu ein bestimmtes Statement gehört. Ich selber präferiere eigentlich den ersten Stil, das ist aber persönlicher Geschmack (so übersehe ich seltener die öffnende Klammer). Bei sehr kurzen Funktionen (Ein- oder Zweizeiler) nutze ich auch mal den letzteren.</p>
<p>SKB schrieb:</p>
<blockquote>
<p>...Was ist eigentlich, wenn ich in dem void noch ein anderes query ausführen möchte? Kann ich dann einfach das char query[100]; neu füllen? Oder erstelle ich dann einfach ein neues?...</p>
</blockquote>
<p>Mit dem void???</p>
<p>Aber grundsätzlich: Ja du kannst eine Variable mehrfach verwenden, solltest dies aber nur tun wenn man im Code erkennen kann was gemeint ist (nicht das man später etwas ergänzt und nicht bemerkt das die Variable schon mit anderen Werten als erwartet gesetzt wird). Es gibt einfach nur eine potentielle Fehlerquelle auf die man aufpassen sollte.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1320886</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320886</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Sun, 08 Jul 2007 17:43:44 GMT</pubDate></item><item><title><![CDATA[Reply to Kleines Speicherproblem bzw malloc Verständnis on Sun, 08 Jul 2007 17:54:24 GMT]]></title><description><![CDATA[<p>Also das Einrücken finde ich bei meinem Beitrag, den ich zuletzt erstellt habe schonmal gar nicht schlecht <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="😉"
    /></p>
<p>Also kann ich hingehen:</p>
<pre><code class="language-cpp">char query [100];
sprintf(query, &quot;insert into table (id, name) VALUES ('%s', %s);&quot;, z.print(), SenderX-&gt;print());
SQLCommand(query);

// und hier dann ein neues sprintf

sprintf(query, &quot;select * from table where Wert='Wert';&quot;);
SQLCommand(query);
</code></pre>
<p>Zumindest meckert der Compiler da nicht und die Daten werden einwandfrei ausgelesen.</p>
<p>Gruß,<br />
SKB</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1320895</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320895</guid><dc:creator><![CDATA[SKB]]></dc:creator><pubDate>Sun, 08 Jul 2007 17:54:24 GMT</pubDate></item><item><title><![CDATA[Reply to Kleines Speicherproblem bzw malloc Verständnis on Sun, 08 Jul 2007 17:55:39 GMT]]></title><description><![CDATA[<p>Ja, das geht auf jeden Fall <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="🙂"
    /> Und der Variablen-Name passt auch zur Verwendung, deshalb ist das auch noch gut zu lesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1320898</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320898</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sun, 08 Jul 2007 17:55:39 GMT</pubDate></item><item><title><![CDATA[Reply to Kleines Speicherproblem bzw malloc Verständnis on Sun, 08 Jul 2007 17:57:15 GMT]]></title><description><![CDATA[<p>Dankeschön <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>Also verstehe ich auch richtig, dass das neue sprintf einfach das alte &quot;überschreibt&quot;?</p>
<p>Somit hätte ich ja dann mein malloc() Problem gelöst und alles ist fein <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="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1320904</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320904</guid><dc:creator><![CDATA[SKB]]></dc:creator><pubDate>Sun, 08 Jul 2007 17:57:15 GMT</pubDate></item><item><title><![CDATA[Reply to Kleines Speicherproblem bzw malloc Verständnis on Sun, 08 Jul 2007 19:44:53 GMT]]></title><description><![CDATA[<p>SKB schrieb:</p>
<blockquote>
<p>Also verstehe ich auch richtig, dass das neue sprintf einfach das alte &quot;überschreibt&quot;?</p>
</blockquote>
<p>Ja, das sprintf überschreibt den bestehenden Inhalt mit etwas neuem (was bei längeren Funktionen auch gerne mal übersehen wird ;P aber zu lange Funktionen sollte man eh vermeiden).</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1321013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1321013</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Sun, 08 Jul 2007 19:44:53 GMT</pubDate></item><item><title><![CDATA[Reply to Kleines Speicherproblem bzw malloc Verständnis on Sun, 08 Jul 2007 19:57:38 GMT]]></title><description><![CDATA[<p>Super <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="😉"
    /></p>
<p>Ich danke dir für die schnelle Hilfe. Habe viel gelernt und viel verändert. Seitdem läuft das Prog nun zur vollsten Zufriedenheit <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="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1321024</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1321024</guid><dc:creator><![CDATA[SKB]]></dc:creator><pubDate>Sun, 08 Jul 2007 19:57:38 GMT</pubDate></item></channel></rss>