Ga naar inhoud

C++ | Geheugen vrijgeven


Aanbevolen berichten

Ok, ik heb een probleempje met geheugen vrijgeven. In het volgende kleine testproggie maak ik een array van pointers naar chars. Vraag hier geheugen voor aan en geef het aan het einde weer vrij. Dit werkt goed en fouloos. Maar als ik iets met een van de elementen gaan doen loopt het programma run-time vast. Iemand enig idee? [code:1:cdd9639149] #include <iostream.h> #include <string.h> #define AANTAL_WOORDEN 30 #define LENGTE_WOORD 10 int main() { int j; char *C[AANTAL_WOORDEN], letter[] = "Naam"; for( int i=0; i < 10000; i++) { for( j=0; j < AANTAL_WOORDEN; j++) C[j] = new char( LENGTE_WOORD ); strcpy(C[0], letter); /* zonder dit statement doet alles het wel */ /* hier komt je programma */ for( j=0; j < AANTAL_WOORDEN; j++ ) delete[] C[j]; } return 0; } [/code:1:cdd9639149] Alvast bedankt voor de hulp.
Link naar reactie
Volgens mij vul je alleen maar een element van je array, namelijk C[0], en de rest blijft "leeg". Miischien heb je iets aan de volgende code als het je bedoeling is om een aantal pointers naar char te definieren en die te vullen met een string. #include <iostream.h> #include <string.h> #define AANTAL_WOORDEN 30 #define LENGTE_WOORD 10 int main() { int i,j; char *C[AANTAL_WOORDEN], letter[] = "Naam"; for(j=0; j < AANTAL_WOORDEN; j++) { C[j] = new char( LENGTE_WOORD ); strcpy(C[j], letter); } //rest van je programma for( j = AANTAL_WOORDEN-1; j >= 0; j-- ) delete[] C[j]; return 0; }
Link naar reactie
Dat klopt, ik vul ook alleen element 0. Het was als voorbeeld bedoeld (het programma doet "in het echt" uiteraard veel meer), jouw code compiled ook wel maar ik krijg nog steeds een illegale handeling foutmelding als ik dit programma draai of ligt dat aan mijn compiler (ik gebruik VC++ 6.0)? Het denk ik nog steeds te maken met het feit dat ik verkeerd geheugen aanvraag of vrijgeef... Iemand een idee?
Link naar reactie
Ik heb even de code getest op andere PC met Visual C++ 6 en met een andere compiler. De actie via VC++6 gaf dezelfde melding als degene die jij krijgt terwijl er bij het gebruik van de andere compiler op dezelfde PC geen foutmeldingen ontstaan. Ik moet erbij zeggen dat ik zelf alleen gebruik maak van het linux platform en van de bijbehorende compilers en interpreters. Misschien dat je op de site van de leverancier van je compiler wat imformatie kan vinden over dit probleem
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...