Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Das Gurke

Community-Fossil

  • »Das Gurke« ist der Autor dieses Themas

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

1

04.06.2006, 16:55

std::wstring - Kopieren gibt Probleme im Releasemodus

Verdammt, nun schreib ich den Text hier zum dritten Mal, ich bitte um Nachsicht ...

Ich hab langsam genug von meinen ewigen Problem mit wchar_t bzw char und hab beschlossen mich mal mit strings zu beschäftigen.

Vorerst aber eine Frage:
Hab ich Performancetechnisch Nachteile durch die Benutzung von Strings? Gibt es noch weitere Vorteile ausser der Einfachheit (wie mir bisher scheint) und der Sicherheit weil ich nich mehr ins leere schreiben kann?

der Code

C-/C++-Quelltext

1
sLogBuffer[iCurrentLoad] = sEntry;
funktioniert 1a im Debug Modus, im Release gibts einfach n Crash Oo Warum das?

Edit:
*dough* falsches Forum :? Bitte mal rüberschubsen =)

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

04.06.2006, 17:25

Re: std::wstring - Kopieren gibt Probleme im Releasemodus

Zitat von »"Das Gurke"«

C-/C++-Quelltext

1
sLogBuffer[iCurrentLoad] = sEntry;
funktioniert 1a im Debug Modus, im Release gibts einfach n Crash Oo Warum das?

Dieser Code ist absolut nichtssagend.
Wie soll dir da jemand helfen?!

Das Gurke

Community-Fossil

  • »Das Gurke« ist der Autor dieses Themas

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

3

04.06.2006, 17:27

Tschuldigung, dachte das wäre soweit schon klar :? Immerhin hab ich ja die ganze Zeit von String geredet :oops:

sLogBuffer und sEntry sind beide vom Typ std::wstring, sEntry wird dabei als Parameter einer Methode übergeben. Insgesamt sieht das dann so aus

C-/C++-Quelltext

1
2
3
4
5
6
7
8
bool GX::Log::addEntry(std::wstring sEntry)
{
    sLogBuffer[iCurrentLoad] = sEntry;

    iCurrentLoad += 1;

    return (true);
}

Anonymous

unregistriert

4

04.06.2006, 18:26

deklaration von sLogBuffer bitte.

Das Gurke

Community-Fossil

  • »Das Gurke« ist der Autor dieses Themas

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

5

04.06.2006, 18:44

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
class Log
    {
    public:
        // ...

    private:
        unsigned int iCurrentLoad;
        unsigned int iMaxLoad;
        std::wstring sLogBuffer[10];
        std::wstring sLogDest;
    };

Steven77

Alter Hase

Beiträge: 515

Wohnort: Münster - Gievenbeach

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

6

04.06.2006, 19:04

Hört sich nach falscher Indizierung an.
Initialisierst Du 'iCurrentLoad' mit 0?
Checkst Du, ob der maximal erlaubte Index überschritten wird?

Das Gurke

Community-Fossil

  • »Das Gurke« ist der Autor dieses Themas

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

7

04.06.2006, 19:06

Ja, alles kein Thema, es geht witzigerweise ja auch im Debugmode. Auch ne Abfrage ob der Index überschritten wird hab ich mittlerweile drinne, brachte leider auch nix.

Anonymous

unregistriert

8

04.06.2006, 19:08

Zeig mal den Constructor von Log, hab da so ne Vermutung ;)

Das Gurke

Community-Fossil

  • »Das Gurke« ist der Autor dieses Themas

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

9

04.06.2006, 19:17

C-/C++-Quelltext

1
2
3
4
5
6
7
8
GX::Log::Log(std::wstring sDest)
{
    // Variablen Initialisieren

    iCurrentLoad    = 0;
    iMaxLoad        = 10;
    sLogDest        = sDest;

}


*dough* Muss ich auch den Buffer initialisieren? Wenn ja geb ich mich zum Abschuss frei *gg*

Edit:
Nein, das wars wohl nicht :( Folgender Code brauchte auch nix

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
GX::Log::Log(std::wstring sDest)
{
    // Variablen Initialisieren

    iCurrentLoad    = 0;
    iMaxLoad        = 10;
    sLogDest        = sDest;
    for(unsigned int i = 0; i < iMaxLoad; i++)
    {
        sLogBuffer[i] = L" ";
    }
}

Werbeanzeige