TweakPC

Zurück   Computer Hardware Forum - TweakPC > Games und Software > Programmiersprachen

Antwort
 
LinkBack Themen-Optionen Thema bewerten Ansicht
Alt 01.03.2011, 10:02   #1 (permalink)
Overclocker
 
Benutzerbild von mokus
 
Registriert seit: 07.01.2005
Ort: Göttingen
Beiträge: 379

mokus ist zur Zeit noch ein unbeschriebenes Blatt

Standard C-Speicherverwaltungs problem

Jo,
ich hab seit neusten mit C angefangen, programmiertechnisch aber schon jahre lange erfahrung. Jetzt bin ich aber nen bisschen mit der Speicherverwaltung überfordert und deren auswirkung.

Ich habe eine Pointer-Variable vom typ int "gameField", dort speicher ich auf 42 Feldern Werte, wie in einem zwei dimensionalem Array.

Nebenbei hab ich noch eine Struct-Variable "first", in dieser Speicher ich den Highscore wenn es mal funktioniert. Diese Einträge werden verketten und läuft auch Super.

Mein Problem ist, dass nachdem ich die Methode "FillGameField" ausführe, ich danach keine weiteren Highscore Einträge erstellen kann oder eher gesagt, keinen einzigen...

InsertStatisticEntry <- Erstellt einen neuen Eintrag

VS sagt mir nur das der Heap beschädigt ist, kann damit aber selber nix anfangen.

Code:
// Strukturen
 struct StatisticStruct { 
    char* name;
    StatisticStruct *next;
  };

struct StatisticStruct *first;
int *gameField= (int*)malloc(42);

// Spielfeld
// Füllt das Spielfeld "0"
void FillGameField(){

    for(int i = 0; i < (7*6); i++)
        *(gameField+i) = 0;
}


// Eingabe
// Fängt eine Dezimal-Tastatur eingabe ab.
int ValidUserInput(){

    int value = 0;
    scanf("%d",&value);

    if(value > -1) {
        fflush(stdin);
        return value;
    }
    else {

        fflush(stdin);
        return ValidUserInput();

    }

}

void InsertStatisticEntry( char* name)
{
   struct StatisticStruct* ptr;
  
    if( first == NULL )
       {
           first= (StatisticStruct*)malloc(sizeof( *first ) );

           first->name = name;
        first->next = NULL;
       }
   
      else
       {
         ptr = first;
    
         while( ptr->next != NULL )
             ptr = ptr->next;
    
    ptr->next = (struct StatisticStruct *)malloc( sizeof( *ptr ) );
    
           ptr = ptr->next;
    
           ptr->name = name;
        ptr->next = NULL;
        }


     }

int _tmain(int argc, _TCHAR* argv[])
{

       // Wenn ich weg bin, funktioniert es...
         FillGameField();

    InsertStatisticEntry("test 1");
    InsertStatisticEntry("test 2");

        InsertStatisticEntry("test 2");
    // Liste auslesen
    struct StatisticStruct *ptr = first;
         while( true )  {
          
             printf(ptr->name);
             printf("\n");
             
             if(ptr->next == NULL)
                 break;

             ptr = ptr->next;

         }

    scanf("%d");

        return 0;


}
mokus ist offline   Mit Zitat antworten
Alt 01.03.2011, 20:31   #2 (permalink)
Point
Gast
 
Beiträge: n/a

Standard AW: C-Speicherverwaltungs problem

Auch wenns eine Umgehung darstellt und keine Lösung:
Warum benutzt du nicht int gameField[42]
und dann in for-Schleife einfach gameField[i] = 0 ?

mfg Point
  Mit Zitat antworten
Alt 02.03.2011, 09:31   #3 (permalink)
Overclocker
 
Benutzerbild von mokus
 
Registriert seit: 07.01.2005
Ort: Göttingen
Beiträge: 379

mokus ist zur Zeit noch ein unbeschriebenes Blatt

Standard AW: C-Speicherverwaltungs problem

Muss leider rein mit Pointern arbeiten
mokus ist offline   Mit Zitat antworten
Alt 03.03.2011, 14:59   #4 (permalink)
Overclocker
 
Benutzerbild von mokus
 
Registriert seit: 07.01.2005
Ort: Göttingen
Beiträge: 379

mokus ist zur Zeit noch ein unbeschriebenes Blatt

Standard AW: C-Speicherverwaltungs problem

Das Problem hat sich erledigt, die malloc zuweisung war einfach falsch.

int *gameField= (int*)malloc(42*sizeof(int));
mokus ist offline   Mit Zitat antworten
Antwort

Stichworte
cspeicherverwaltungs, problem


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir erlaubt, neue Themen zu verfassen.
Es ist dir erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
problem mit CCC spike ATI Grafikkarten 1 18.09.2008 21:39
tmpgenc problem und DV problem derschwenker Audio und Video 1 17.05.2006 13:09
cs sli problem! pcfreak92 Games Talk allgemein 9 17.01.2006 16:44
cs sli problem! pcfreak92 Windows & Programme 3 07.01.2006 20:46
problem mit BF2 (SF) Nopileus Games Talk allgemein 3 12.12.2005 22:06


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:29 Uhr.




Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO 3.5.2 ©2010, Crawlability, Inc.
Impressum - Hardware-Links - Partner
Copyright © 1999-2013 TweakPC, Alle Rechte vorbehalten, all rights reserved