<?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[Arrays von Zeigern]]></title><description><![CDATA[<p>In dem Program kommt es zu einem Speicherfehler wenn man die Schleife nicht richtig durchläuft. Warum?</p>
<p>Außerdem möchte ich wissen warum ein Fehler angezeigt wird, wenn man das Objekt Cat auf dem Heap nachher löschen will mittels delete.</p>
<pre><code class="language-cpp">#include &lt;iostream.h&gt;

class CAT
{

    public: 
        CAT() {itsAge=1;itsWeight=5;}
        ~CAT();
        int GetAge() const {return itsAge;}
        int GetWeight() const {return itsWeight;}
        void SetAge(int Age){itsAge=Age;}

    private:
        int itsAge;
        int itsWeight;   
};

int main(){

    CAT * Family[500];
    int i;
    CAT * pCat;
    for(i=35;i&lt;500;i++){ // warum bei 0 anfangen ?
    pCat=new CAT;
    pCat-&gt;SetAge(2*i+1);
    Family[i]=pCat;    
    // delete pCat;  erzeugt Fehler!!
    }       

    for(i=0;i&lt;500;i++){
     cout &lt;&lt; &quot;Katze #&quot;&lt;&lt; i+1&lt;&lt;&quot;: &quot;;
     cout &lt;&lt; Family[i]-&gt;GetAge()&lt;&lt;endl;   
    }    
    system(&quot;pause&quot;);
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/207431/arrays-von-zeigern</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Oct 2026 06:05:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/207431.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 07 Mar 2008 14:13:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Arrays von Zeigern on Fri, 07 Mar 2008 14:13:57 GMT]]></title><description><![CDATA[<p>In dem Program kommt es zu einem Speicherfehler wenn man die Schleife nicht richtig durchläuft. Warum?</p>
<p>Außerdem möchte ich wissen warum ein Fehler angezeigt wird, wenn man das Objekt Cat auf dem Heap nachher löschen will mittels delete.</p>
<pre><code class="language-cpp">#include &lt;iostream.h&gt;

class CAT
{

    public: 
        CAT() {itsAge=1;itsWeight=5;}
        ~CAT();
        int GetAge() const {return itsAge;}
        int GetWeight() const {return itsWeight;}
        void SetAge(int Age){itsAge=Age;}

    private:
        int itsAge;
        int itsWeight;   
};

int main(){

    CAT * Family[500];
    int i;
    CAT * pCat;
    for(i=35;i&lt;500;i++){ // warum bei 0 anfangen ?
    pCat=new CAT;
    pCat-&gt;SetAge(2*i+1);
    Family[i]=pCat;    
    // delete pCat;  erzeugt Fehler!!
    }       

    for(i=0;i&lt;500;i++){
     cout &lt;&lt; &quot;Katze #&quot;&lt;&lt; i+1&lt;&lt;&quot;: &quot;;
     cout &lt;&lt; Family[i]-&gt;GetAge()&lt;&lt;endl;   
    }    
    system(&quot;pause&quot;);
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1470056</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1470056</guid><dc:creator><![CDATA[david3252]]></dc:creator><pubDate>Fri, 07 Mar 2008 14:13:57 GMT</pubDate></item><item><title><![CDATA[Reply to Arrays von Zeigern on Fri, 07 Mar 2008 15:02:57 GMT]]></title><description><![CDATA[<p>Wenn du nicht bei 0 anfängst sondern irgendwo mittendrin z.B. 35<br />
Dann sind die Zeiger zwischen Familiy[0] und Familiy[34] auch keine<br />
gültigen Zeiger auf Cat-Objekte.</p>
<p>D.h. wenn du später über Familiy[0]-&gt;GetAge() auf die Zeiger zugreifst,<br />
zeigen diese irgendwo in den Speicher.<br />
Und da kann nicht viel mehr dabei rauskommen als ein Speicherzugriffsfehler.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1470079</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1470079</guid><dc:creator><![CDATA[Mario Sandler]]></dc:creator><pubDate>Fri, 07 Mar 2008 15:02:57 GMT</pubDate></item><item><title><![CDATA[Reply to Arrays von Zeigern on Fri, 07 Mar 2008 15:16:03 GMT]]></title><description><![CDATA[<p>david3252 schrieb:</p>
<blockquote>
<p>In dem Program kommt es zu einem Speicherfehler wenn man die Schleife nicht richtig durchläuft. Warum?</p>
<p>Außerdem möchte ich wissen warum ein Fehler angezeigt wird, wenn man das Objekt Cat auf dem Heap nachher löschen will mittels delete.</p>
<pre><code class="language-cpp">#include &lt;iostream.h&gt;

class CAT
{
 
    public: 
        CAT() {itsAge=1;itsWeight=5;}
        ~CAT();
        int GetAge() const {return itsAge;}
        int GetWeight() const {return itsWeight;}
        void SetAge(int Age){itsAge=Age;}
        
    private:
        int itsAge;
        int itsWeight;   
};

int main(){
 
    CAT * Family[500];
    int i;
    CAT * pCat;
    for(i=35;i&lt;500;i++){ // warum bei 0 anfangen ?
</code></pre>
<p>tja, weil der Array den du initialisierst immer mit 0 anfaengt zu zaehlen. Wenn du nicht verstehst warum man bei null anfaengt zu zaehlen schau dir mal die natuerlichen Zahlen in deinem Mathebuch an.</p>
<pre><code class="language-cpp">pCat=new CAT;
    pCat-&gt;SetAge(2*i+1);
    Family[i]=pCat;    
    // delete pCat;  erzeugt Fehler!!
</code></pre>
<p>du hast keinen destruktor geschrieben, sondern nur einen definiert. Bei deinem Beispiel kannst du den destruktor auch weglassen da du keine Resource in deinem Konstruktor allocierst. Im Klartext du reservierst dir keinen Speicher mit new im Konstruktor.</p>
<pre><code class="language-cpp">}       
    
    for(i=0;i&lt;500;i++){
</code></pre>
<p>damit duerfte dieser Teil hier auch Fehlerhaft sein. Du kannst aber hier ab 35 anfangen auszugeben. Denn zurzeit versucht du auf Null Pointer zuzugreifen. Den die ersten 35 Elemente in deinem Array sind Null Pointer und zeigen ins nirvana. Erst der rest ab 35 hat ein Objekt zugewiesen bekommen in deiner oberen schleife.</p>
<pre><code class="language-cpp">cout &lt;&lt; &quot;Katze #&quot;&lt;&lt; i+1&lt;&lt;&quot;: &quot;;
     cout &lt;&lt; Family[i]-&gt;GetAge()&lt;&lt;endl;   
    }    
    system(&quot;pause&quot;);
    return 0;
}
</code></pre>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1470091</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1470091</guid><dc:creator><![CDATA[O.G.Wrapper]]></dc:creator><pubDate>Fri, 07 Mar 2008 15:16:03 GMT</pubDate></item></channel></rss>