Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Speicherleck

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ] [ 3 ]
000
15.10.2003, 16:56 Uhr
Anfänger00



Hallo,
ich kompilere mit dem dev-c++ Compiler und habe ein Problem mit folgendem Programm:

C++:
#include <iostream>
#include <conio.h>// ja ich weiß das,dass nicht portabel ist,ich brauchs aber für getch();
using namespace std;

int mystrlen(const char* buffer)
{
    int x=0;
    while(buffer[x] != '\0')x++; //Strings in C sind Nullterminiert
    return x-1;
};

int erm_M(char* Wort);
//Ermittelt die Anzahl der Moeglichkeiten;

void Permutation(char* &ausg,char Wort[512],int anz_moeg);
    //  (1)              hier wird einem String per Reference,die Moeglickeiten
    //                   uebergeben;
    //  (2)              Wort;
    //  (3)              Anzahl der Moeglickeiten;

int main()
{
    char* Ausgabe;
    char* Wort;
    int Anzahl;

    cout<<" Wort eingeben (auch Zahlen): ";
    cin>>Wort;
    Anzahl = erm_M(Wort);
    Permutation(Ausgabe,Wort,Anzahl);
    cout<<"Es gibt "<<Anzahl<<" verschiedene Moeglichkeiten das Wort auszugeben.\n";
    getch();
    cout<<"Das sind: "<<Ausgabe<<endl;
    getch();
}

int erm_M(char* Wort)
{
    int i = mystrlen(Wort);
    int ret=1;
    for(int j=1;j<=i+1;j++)
    {
        ret*=j;
    }
    return ret;
}

void Permutation(char* &ausg,char Wort[512],int anz_moeg)
{
    int p=0;
    int g = mystrlen(Wort);
    int i=0;
    while(i<anz_moeg || ausg[p+g+5] != '\0')
    {
        i++;
        ausg[p]=' ';
        ausg[p+1]=' ';
        p+=2;
        for(int x=0;x<g+1;x++)
        {
            ausg[p]=Wort[x];
            p++;
        }
        ausg[p]=' ';
        ausg[p+1]=' ';
        ausg[p+2]='+';
        p+=3;
    }
}


(Das mit der Permutation ist natürlich noch nicht implementiert,sondern nur ein Test)
Wenn ich jetzt einen String mit mehr als 5 Zeichen eingebe stürtzt das Programm ab.Ich habe auch versucht das in der Funktion mit char* &ausg
und in dem Haupteil ausgabe mit einem char-array zu machen.Das liefert aber einen Compilerfehler..
Ich bin ratlos und brauche euren Rat,habt ihr ne Idee???


Bearbeitung:
Sieht das nicht besser so?

Dieser Post wurde am 16.10.2003 um 21:43 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
15.10.2003, 17:17 Uhr
ao

(Operator)


"Wort" ist ein Pointer ohne Speicher, auf den er zeigt. Die eingelesenen Zeichen landen irgendwo und verursachen eine Schutzverletzung.

Fürs Erste könntest du mal Wort so deklarieren:

char Wort [1024];

Dann hast du Platz für 1023 Zeichen.

Für Ausgabe gilt dasselbe.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
15.10.2003, 19:01 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


oder du benutzt immer std::string, dann brauchst du dir keine gedanken über die speicherverwaltung machen
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
15.10.2003, 20:06 Uhr
Pablo
Supertux
(Operator)


Ich würde auch Ausgabe als char[1024] deklarieren oder den Speicher mit new reservieren.

Tipp für die Lesbarkeit deines Programmes: Immer schön Einrücken!!! Das macht die Sache einfacher für dich und für uns.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 15.10.2003 um 20:06 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
16.10.2003, 16:13 Uhr
Anfänger00



Ich rücke nun mal nicht seber ein,das sollte eigentlich die IDE übernehmen!
Aber es funzt halt nicht,also is mir das auch egal.Naja,wenn ihr wisst ob man bei dev-c++ da einfach nur was umsellen muss,habt ihr in zukunft auch sauber formatierten code.

Dieser Post wurde am 16.10.2003 um 16:14 Uhr von Anfänger00 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
16.10.2003, 16:42 Uhr
virtual
Sexiest Bit alive
(Operator)



Zitat:
Anfänger00 postete
Ich rücke nun mal nicht seber ein,das sollte eigentlich die IDE übernehmen!


ROTFL
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
16.10.2003, 16:42 Uhr
Pablo
Supertux
(Operator)


Man kann ja selber die TAB Taste drücken, so schwer ist sie wieder nicht!
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
16.10.2003, 20:51 Uhr
Anfänger00



naja,ok.
Ich wollte das so machen das,das im hauptprogramm,das mit einem array einer bestimmten Größe festgelegt werden kann,aber die Funktion,eben einen unbegrenzten Wert akzeptieren soll.
Also,so dass ich in der main Funktion char ausg[500],char ausg[80000] oder
ausg[9999]... verwenden kann.
Doch wie macht man das?

Dieser Post wurde am 16.10.2003 um 20:56 Uhr von Anfänger00 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
16.10.2003, 21:05 Uhr
Pablo
Supertux
(Operator)


Statt char* Ausgabe;
schreibst du
char Ausgabe[1024]; und der Rest wie immer
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
16.10.2003, 21:15 Uhr
Anfänger00



Das hab ich jetzt gemacht,aber wenn ich eine Zeichenkette >5 eingebe beendet das Programm einfach.
Aber der compiler meckert wenn ich das &-Zeichen nicht weglasse.
Das scheint ja eh schon per reference übergeben zu werden,wegen char*...?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: