<?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[Fehlermeldung: invalid conversion from void to char. Wer kann helfen?]]></title><description><![CDATA[<p>Ich habe mit folgendem Programm Probleme. Beim Kompilieren bekomme ich folgende Fehlermeldung:</p>
<pre><code>alloc.c: In function â€˜int main()â€™:
alloc.c:19: error: invalid conversion from â€˜void*â€™ to â€˜char**â€™
alloc.c:22: error: invalid conversion from â€˜void*â€™ to â€˜char*â€™
alloc.c:29: error: invalid conversion from â€˜void*â€™ to â€˜char*â€™
</code></pre>
<p>Also immer an der Stelle an der ich dem Zeiger &quot;test&quot; einen Speicherbereich mit &quot;malloc&quot; zuordne. Ich bin mir sicher, dass es nur eine kleine Änderung an dem Programm bedarf, auf die ich aber bisher alleine nicht gekommen bin.</p>
<p>Hier das Programm, es geht dabei um dynamische Speicherbelegung, aber um die Fehlermeldung auszumerzen sind wahrscheinlich nur die fettgedruckten Zeilen interessant.</p>
<p>Vielen Danke für eure Hilfe.</p>
<pre><code class="language-cpp">#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;time.h&gt;

unsigned int iterations=1000;    // Anzahl der Wiederholungen fuer den Test
unsigned int blockMax=10000;    // Maximale Blockgroesse fuer malloc
unsigned int vectorLength=500;  // Laenge des Zeigervektors

main()
{
   char **test;
   unsigned int i,j,quot,t1,t2,blockSize;

   t1=clock();                           // Stoppuhr an
   for(blockSize=500;blockSize&lt;=blockMax;blockSize+=500)
   {
      quot=RAND_MAX/blockSize;
//      t1=clock();
      test=malloc(vectorLength*sizeof(char *));
      for(i=0;i&lt;vectorLength;i++)        // Initialisierungsschleife
      {
         test[i]=malloc((rand()/quot)*sizeof(char));
      }
      for(j=0;j&lt;iterations;j++)          // free/alloc-Schleife
      {
         for(i=0;i&lt;vectorLength;i++)
         {
            free(test[i]);
            test[i]= malloc((rand()/quot)*sizeof(char));
         }
      }
      for(i=0;i&lt;vectorLength;i++)       // Freigabeschleife
      { 
         free(test[i]);
      }
//      t2=clock();
//      printf(&quot;%i   %f\n&quot;,blockSize,((double)(t2-t1))/CLOCKS_PER_SEC); 
   }
   free(test);
   t2=clock();                          // Stoppuhr aus
   printf(&quot;%i   %f\n&quot;,blockSize,((double)(t2-t1))/CLOCKS_PER_SEC);
}
</code></pre>
<p>/edit pumuckl [cpp</p>
<p>]-Tags - bitte demnächst selber machen</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/253506/fehlermeldung-invalid-conversion-from-void-to-char-wer-kann-helfen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 13 Sep 2026 17:34:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/253506.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 03 Nov 2009 12:07:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fehlermeldung: invalid conversion from void to char. Wer kann helfen? on Tue, 03 Nov 2009 12:44:18 GMT]]></title><description><![CDATA[<p>Ich habe mit folgendem Programm Probleme. Beim Kompilieren bekomme ich folgende Fehlermeldung:</p>
<pre><code>alloc.c: In function â€˜int main()â€™:
alloc.c:19: error: invalid conversion from â€˜void*â€™ to â€˜char**â€™
alloc.c:22: error: invalid conversion from â€˜void*â€™ to â€˜char*â€™
alloc.c:29: error: invalid conversion from â€˜void*â€™ to â€˜char*â€™
</code></pre>
<p>Also immer an der Stelle an der ich dem Zeiger &quot;test&quot; einen Speicherbereich mit &quot;malloc&quot; zuordne. Ich bin mir sicher, dass es nur eine kleine Änderung an dem Programm bedarf, auf die ich aber bisher alleine nicht gekommen bin.</p>
<p>Hier das Programm, es geht dabei um dynamische Speicherbelegung, aber um die Fehlermeldung auszumerzen sind wahrscheinlich nur die fettgedruckten Zeilen interessant.</p>
<p>Vielen Danke für eure Hilfe.</p>
<pre><code class="language-cpp">#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;time.h&gt;

unsigned int iterations=1000;    // Anzahl der Wiederholungen fuer den Test
unsigned int blockMax=10000;    // Maximale Blockgroesse fuer malloc
unsigned int vectorLength=500;  // Laenge des Zeigervektors

main()
{
   char **test;
   unsigned int i,j,quot,t1,t2,blockSize;

   t1=clock();                           // Stoppuhr an
   for(blockSize=500;blockSize&lt;=blockMax;blockSize+=500)
   {
      quot=RAND_MAX/blockSize;
//      t1=clock();
      test=malloc(vectorLength*sizeof(char *));
      for(i=0;i&lt;vectorLength;i++)        // Initialisierungsschleife
      {
         test[i]=malloc((rand()/quot)*sizeof(char));
      }
      for(j=0;j&lt;iterations;j++)          // free/alloc-Schleife
      {
         for(i=0;i&lt;vectorLength;i++)
         {
            free(test[i]);
            test[i]= malloc((rand()/quot)*sizeof(char));
         }
      }
      for(i=0;i&lt;vectorLength;i++)       // Freigabeschleife
      { 
         free(test[i]);
      }
//      t2=clock();
//      printf(&quot;%i   %f\n&quot;,blockSize,((double)(t2-t1))/CLOCKS_PER_SEC); 
   }
   free(test);
   t2=clock();                          // Stoppuhr aus
   printf(&quot;%i   %f\n&quot;,blockSize,((double)(t2-t1))/CLOCKS_PER_SEC);
}
</code></pre>
<p>/edit pumuckl [cpp</p>
<p>]-Tags - bitte demnächst selber machen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1802622</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1802622</guid><dc:creator><![CDATA[IngoBoetch]]></dc:creator><pubDate>Tue, 03 Nov 2009 12:44:18 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung: invalid conversion from void to char. Wer kann helfen? on Tue, 03 Nov 2009 12:10:45 GMT]]></title><description><![CDATA[<p>In C++ musst du die Rückgabe von malloc in den entsprechenden Zeigertyp casten (in C allerdings nicht).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1802625</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1802625</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Tue, 03 Nov 2009 12:10:45 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung: invalid conversion from void to char. Wer kann helfen? on Tue, 03 Nov 2009 12:11:24 GMT]]></title><description><![CDATA[<p>Zwei mögliche Lösungen:<br />
1. Nimm new[]/delete[]<br />
2. Benutze einen C-Compiler</p>
<p>Es gibt zwar noch eine dritte Lösung, aber die verschweige ich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1802626</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1802626</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 03 Nov 2009 12:11:24 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung: invalid conversion from void to char. Wer kann helfen? on Tue, 03 Nov 2009 12:42:58 GMT]]></title><description><![CDATA[<p>Wenn ich schon wieder sehe, dass 'main()' als gültiges C/C++ angenommen wird, würde ich sowieso einen anderen Compiler empfehlen. Was nimmst du denn?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1802639</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1802639</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 03 Nov 2009 12:42:58 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung: invalid conversion from void to char. Wer kann helfen? on Tue, 03 Nov 2009 14:05:47 GMT]]></title><description><![CDATA[<p>Danke, für die schnelle Hilfe. Ich habe mich jetzt für die Lösung mit new/delete entschieden, da C-Compiler nicht möglich ist (das Programm ist Grundlage für ein anderes in dem ich Boost-Bibliotheken benutze).</p>
<p>Jetzt stehe ich vor folgender Herausforderung:</p>
<p>wie setze ich diesen Befehl</p>
<p>*<em>test[i]=malloc((rand()/quot)<em>sizeof(char));</em></em></p>
<p>in einen &quot;new&quot;-Befehl um. Soweit ich weiss, kann ich bei new nur größen wie &quot;int&quot; &quot;char&quot; etc. benutzen aber keine Werte wie hier bei Malloc (Zahl * sizeof(char)).</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19375">@SeppJ</a>: ich benutze g++ Kompiler und würde gerne dabei bleiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1802670</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1802670</guid><dc:creator><![CDATA[IngoBoetch]]></dc:creator><pubDate>Tue, 03 Nov 2009 14:05:47 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung: invalid conversion from void to char. Wer kann helfen? on Tue, 03 Nov 2009 14:23:41 GMT]]></title><description><![CDATA[<p>Das mit new geht schon, einfach ausprobieren.</p>
<p>Ist rand() in malloc nicht ein wenig krank? Woher weißt du später, wieviel Speicher alloziert wurde, wenn du den zufallsgenerierten Wert nicht irgendwo wegspeicherst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1802679</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1802679</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Tue, 03 Nov 2009 14:23:41 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung: invalid conversion from void to char. Wer kann helfen? on Tue, 03 Nov 2009 14:29:32 GMT]]></title><description><![CDATA[<p>IngoBoetch schrieb:</p>
<blockquote>
<p>Danke, für die schnelle Hilfe. Ich habe mich jetzt für die Lösung mit new/delete entschieden, da C-Compiler nicht möglich ist (das Programm ist Grundlage für ein anderes in dem ich Boost-Bibliotheken benutze).</p>
<p>Jetzt stehe ich vor folgender Herausforderung:</p>
<p>wie setze ich diesen Befehl</p>
<p>*<em>test[i]=malloc((rand()/quot)<em>sizeof(char));</em></em></p>
<p>in einen &quot;new&quot;-Befehl um. Soweit ich weiss, kann ich bei new nur größen wie &quot;int&quot; &quot;char&quot; etc. benutzen aber keine Werte wie hier bei Malloc (Zahl * sizeof(char)).</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19375">@SeppJ</a>: ich benutze g++ Kompiler und würde gerne dabei bleiben.</p>
</blockquote>
<ol>
<li>Bevor du die Boost-bibliotheken benutzen willst solltest du erstmal ein Grundlagentutorial durchgehen, da steht unter anderem drin, wie man new benutzt. Das ist in etwa als wolltest du Integralrechnung benutzen ohne das kleine Einmaleins zu können.</li>
<li>Benutze bitte die [cpp]-Tags wie oben bereits gezeigt.</li>
<li>Wie alt ist dein g++? Der Code den du uns da präsentierst hat einen schwerwiegenden Fehler (main-Funktion ohne Rückgabetyp ist in den 80ern vielleicht mal möglich gewesen, inzwischen sollte jeder Compiler einen Fehler ausgeben)</li>
<li>Dein Code ist C, kein C++:<br />
- malloc/free sind wie schon angedeutet C-Funktionen. In C++ benutzt main new/delete, spätestens bei der Benutzung von non-PODs erhälst du sonst undefiniertes Verhalten.<br />
- &lt;stdio.h&gt;, &lt;stdlib.h&gt;, &lt;time.h&gt; sind alte C-Header die man in C++ nicht benutzen sollte (wenn die im C++-Tutorial/buch stehen schmeiß es weg und nimm ein richtiges)<br />
- printf ist eine C-Funktion, in C++ benutzt man im Normalfall die &lt;iostream&gt;-Bibliothek</li>
</ol>
]]></description><link>https://www.c-plusplus.net/forum/post/1802686</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1802686</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 03 Nov 2009 14:29:32 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung: invalid conversion from void to char. Wer kann helfen? on Tue, 03 Nov 2009 14:31:36 GMT]]></title><description><![CDATA[<p>So jetzt funktionierts und zwar mit:</p>
<p><strong>test[x]= new char(rand()/quot);</strong></p>
<p>Danke für die Hilfe.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/248">@matze</a>: krank? kann sein. Ist eine Idee von meinem Prof. gewesen. Es ist gewollt dass einfach wild Speicher belegt und freigegeben wird. Hintergrund der Sache ist, dass im nächsten Schritt geprüft wird inwiefern sich das Zeitverhlaten ändert wenn man das ganze mit parallel-laufenden Threads probiert (auf Multi-Core-Rechnern).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1802688</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1802688</guid><dc:creator><![CDATA[IngoBoetch]]></dc:creator><pubDate>Tue, 03 Nov 2009 14:31:36 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung: invalid conversion from void to char. Wer kann helfen? on Tue, 03 Nov 2009 14:47:19 GMT]]></title><description><![CDATA[<p>IngoBoetch schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/248">@matze</a>: krank? kann sein. Ist eine Idee von meinem Prof. gewesen. Es ist gewollt dass einfach wild Speicher belegt und freigegeben wird. Hintergrund der Sache ist, dass im nächsten Schritt geprüft wird inwiefern sich das Zeitverhlaten ändert wenn man das ganze mit parallel-laufenden Threads probiert (auf Multi-Core-Rechnern).</p>
</blockquote>
<p>Hm, der Sinn dahinter (und wie man da eine verlässliche Aussage bekommen will, und vor allem wozu) will sich mir noch nicht ganz erschließen, aber gut...</p>
<p>Übrigens: Wenn du malloc/new benutzt, solltest du normalerweise zur Sicherheit prüfen, ob nicht ein NULL-Zeiger zurückgegeben wurde (was üblicherweise Speichermangel bedeuten würde).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1802703</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1802703</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Tue, 03 Nov 2009 14:47:19 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung: invalid conversion from void to char. Wer kann helfen? on Tue, 03 Nov 2009 17:40:54 GMT]]></title><description><![CDATA[<p>_matze schrieb:</p>
<blockquote>
<p>Übrigens: Wenn du malloc/new benutzt, solltest du normalerweise zur Sicherheit prüfen, ob nicht ein NULL-Zeiger zurückgegeben wurde (was üblicherweise Speichermangel bedeuten würde).</p>
</blockquote>
<p>Ich denk mal du meinst malloc/free <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="😉"
    /> new wirft std::bad_alloc bei fehlschlag</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1802799</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1802799</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 03 Nov 2009 17:40:54 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung: invalid conversion from void to char. Wer kann helfen? on Tue, 03 Nov 2009 19:04:17 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>Ich denk mal du meinst malloc/free <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>
</blockquote>
<p>Jepp, klar...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1802838</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1802838</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Tue, 03 Nov 2009 19:04:17 GMT</pubDate></item></channel></rss>