Letzter Beitrag der vorhergehenden Seite:
Alaska??? Wärmer???!!!??Adventure: Syberia 2
- Coren-7
- Verwaltung
- Beiträge: 3485
- Registriert: 05.02.2004, 18:47
- Geschlecht: männlich
- KI-Nummer: 155736
- Wohnort: Berlin
- Alter: 40
- Kontaktdaten:
Für alle, die Syberia noch nicht haben aber sich es zulegen wollen, für die hab ich ein besonderes Angebot: Syberia 1 & 2 - Deluxe für nur 28€ 

Ich sehe euch stehen wie Windhunde an den Leinen,
nach dem Start drängend. Das Spiel ist im Gange.
SHAKESPEARE
nach dem Start drängend. Das Spiel ist im Gange.
SHAKESPEARE
- KlyX
- Forscher
- Beiträge: 4445
- Registriert: 05.02.2004, 17:37
- Wohnort: Langenthal, Schweiz
- Alter: 40
- Kontaktdaten:
Soundtrack zu Syberia II
Hallo Leute
Syberia II ist ja schon ein 04er Spiel, aber ich spiels erst jetzt. Und schon nach einigen Stunden spielen hab ich mich in den Soundtrack verliebt, den ich mir gerne durchgehend anhören möchte. Nun ist dieser aber nicht wie bei Syberia I direkt als Musikdatei vorliegend, sondern scheinbar in die SYB-Files verpackt...
Kann mir wer sagen, obs eine Möglichkeit gibt, an dieser heranzukommen?
Gruss
KlyX
Syberia II ist ja schon ein 04er Spiel, aber ich spiels erst jetzt. Und schon nach einigen Stunden spielen hab ich mich in den Soundtrack verliebt, den ich mir gerne durchgehend anhören möchte. Nun ist dieser aber nicht wie bei Syberia I direkt als Musikdatei vorliegend, sondern scheinbar in die SYB-Files verpackt...
Kann mir wer sagen, obs eine Möglichkeit gibt, an dieser heranzukommen?
Gruss
KlyX
- TheSearcher
- Forscher
- Beiträge: 753
- Registriert: 10.10.2004, 13:21
- Wohnort: Magdeburg
- Alter: 39
Ich habe auch schon mal nach einem Syberia II-Soundtrack gesucht. Im Forum sagten sie ganz offiziell, dass das Rippen der Dateien aus den syb-Dateien illegal ist. Genauso wenig wollen sie einen Soundtrack veröffentlichen (ich hätte ihn gekauft).
Ein Zufall: vor kurzer Zeit überlegte ich auch das Format der *.syb-Dateien zu knacken (schließlich habe ich es auch bei den *.big Dateien von Atlantis hinbekommen, siehe meine Homepage).
Auf deine Anregung hin habe ich Syberia II eben installiert und mir im Hex-Edtor das Dateiformat der *.syb-Dateien angeschaut: ist ganz einfach aufgebaut. Ich könnte spontan einen Extractor programmieren.
Die schlechte Nachricht:
ich habe nebenbei noch ein Mathematik-Studium zu bewältigen. Ich schreibe garantiert das Programm. Kannst du damit leben, wenn du ca. 2 Wochen warten musst, bis ich fertig bin?
P. S.: Den Aufbau könnte ich dir aber schon jetzt erläutern, falls du es wirklich von Hand machen willst (was aber ziemlich viel Arbeit sein dürfte)
Ein Zufall: vor kurzer Zeit überlegte ich auch das Format der *.syb-Dateien zu knacken (schließlich habe ich es auch bei den *.big Dateien von Atlantis hinbekommen, siehe meine Homepage).
Auf deine Anregung hin habe ich Syberia II eben installiert und mir im Hex-Edtor das Dateiformat der *.syb-Dateien angeschaut: ist ganz einfach aufgebaut. Ich könnte spontan einen Extractor programmieren.
Die schlechte Nachricht:
ich habe nebenbei noch ein Mathematik-Studium zu bewältigen. Ich schreibe garantiert das Programm. Kannst du damit leben, wenn du ca. 2 Wochen warten musst, bis ich fertig bin?
P. S.: Den Aufbau könnte ich dir aber schon jetzt erläutern, falls du es wirklich von Hand machen willst (was aber ziemlich viel Arbeit sein dürfte)

Der Zyklustyp einer Permutation ist konjugationsinvariant.
Ich wäre auch an dem Soundtrack bzw. an einer Extractor-Software interessiert.
Mich würde auch interessieren mit welcher Begründung "die im Forum" das Rippen als illegal bezeichnen. Ich habe das Gefühl, diese ganze Urheberrechtsproblematik nimmt absurde Züge an. (So etwa nach dem Motto: Wenn du mit dem Toaster, den du bei mir gekauft hast, geschnittenes Kümmelbrot statt Toastbrot toastest, dann verklage ich dich.) Hast du zufällig einen Link zum entsprechenden Thread im Syberia-Forum, damit man das nachlesen kann?
Mich würde auch interessieren mit welcher Begründung "die im Forum" das Rippen als illegal bezeichnen. Ich habe das Gefühl, diese ganze Urheberrechtsproblematik nimmt absurde Züge an. (So etwa nach dem Motto: Wenn du mit dem Toaster, den du bei mir gekauft hast, geschnittenes Kümmelbrot statt Toastbrot toastest, dann verklage ich dich.) Hast du zufällig einen Link zum entsprechenden Thread im Syberia-Forum, damit man das nachlesen kann?
Bartle-Test: ESAK (87/53/47/13)
- TheSearcher
- Forscher
- Beiträge: 753
- Registriert: 10.10.2004, 13:21
- Wohnort: Magdeburg
- Alter: 39
@Marck:
Microids wurde von Ubi gekauft. Daher gibt es das Forum nicht mehr. Ich hätte sonst gerne ein wenig die Beiträge zitiert (alleine schon um euch ein wenig zu ärgern und zu verunsichern
).
@KlyX:
Um dein Argument z.u widerlegen:
Ich weiß jedoch noch, dass im Forum so etwas im Stil stand (in meine saloppe Sprache gefasst): du hast das Spiel gekauft, okay, und die EULA erlaubt es dir es zu spielen, aber du hast nicht das Recht gekauft dir deine Audio-Soundtrack-CD zu brennen, genauso wenig wie du die Rechte an den Audio-Dateien besitzt, die besitzen nämlich WIR (genauso wie das ganze Spiel UNSER Eigentum ist, DU hast nur ein Benutzungsrecht im Sinne von spiele). Damit ist das Rippen der Sounds VERBOTEN (ich meine sie haben sogar etwas von rechtlichen Konsequenzen gegen Anleitungen zum Rippen geschrieben).
Aber: Microids gibt es nicht mehr (s. oben). Ich hätte mir sowieso nichts aus ihren Drohungen gemacht.
PS: Gestern hatte mich dann doch ein wenig die Syberia-Hack-Sucht gepackt, so dass ich in der Zeit die dringend für Übungszettel geboten gewesen wäre, gecodet habe. Grundlegend funktioniert er schon ziemlich gut (wenn ich die Klausur in Lineare Algebra nicht schaffe, bist du schuld KlyX -> yeah, ich habe einen Sündenbock
) Für alle Tester hier der Sourcecode (wie ihr daraus eine exe erzeugt steht unter http://wase.urz.uni-magdeburg.de/wkelle ... WeltenWiki ). Falls ihr Probleme damit habt, die exe zu erzeugen, teilt es mir mit, damit ich die Anleitung verbessern kann. Kopiert die *.syb-Dateien in den Ordner mit der exe (dieser Ordner sollte bitte *nur* die exe enthalten). Anschließend Start/Ausführen; dort cmd (Win 2k/XP) bzw. command eingeben, in den Ordner mit der exe-Datei wechseln und eingeben: sybdecode.exe filename.syb (dabei wird vorausgesetzt, dass die exe-Datei sybdecode.exe heißt; filename.syb muss natürlich durch die konkrete syb-Datei ersetzt werden). Beachtet, dass die Dateien alle in den aktuellen Ordner entpackt werden - eine Sache, die ich in Zukunft beseitigen will. Deshalb sollte der Ordner nur die exe-Datei und die syb-Dateien enthalten. Kopier dannach am besten den ganzen entpackten Kram woanders hin.
PPS: Die Musikdateien sind in MinimalRes.syb und fangen alle mit m_ an und enden mit .mp3
PPPS: Es ist auch möglich mehrere Dateinamen zu übergeben also z. B.
sybdecode.exe file1.syb file2.syb file3.syb
Würde aber abraten davon Gebrauch zu machen.
PPPPS: Diese Version ist ausdrücklich eine Beta-Version. Bugs habe ich keine gefunden, aber man weiß nie
PPPPPS: Bräuchte irgendjemand auch einen Packer für die syb-Dateien, um aus diversen Dateien eine syb-Datei zu bauen. Könnte man sicher sehr einfach bauen. Aber braucht das jemand. Vielleicht weil man ein MOD für Syberia erstellen will. Es wäre auch nicht viel mehr Arbeit als das Schreiben des Entpackers.
Datei main.cpp:
#include <cstdio>
#include <cstdlib>
#include <cstring>
const unsigned long identifier=0x47425856;
int main(int argc, char** argv)
{
FILE* act_file;
FILE* output_file;
if (argc<2)
{
printf("Usage: sybdecode filename.syb\n");
return 1;
}
for (int i=1; i<argc; i++)
{
unsigned long read_identifier;
unsigned long body_adress;
unsigned long header_adress;
unsigned long act_file_length;
unsigned long header_read_end;
act_file=fopen(argv, "rb");
if (act_file==NULL)
{
fprintf(stderr, "Could not open file %s\n", argv);
return 1;
}
if(!fread(&read_identifier, sizeof(unsigned long), 1, act_file))
{
fprintf(stderr, "Unexpected EOF while reading; line=%u\n", __LINE__);
return 1;
}
if (read_identifier!=identifier)
{
printf("Invalid file: identifier must be VXBG\n");
}
if(!fread(&header_read_end, sizeof(unsigned long), 1, act_file))
{
fprintf(stderr, "Unexpected EOF while reading; line=%u\n", __LINE__);
return 1;
}
header_read_end+=4; // The first 4 bytes (identifier) do not count
body_adress=header_read_end+4; // The last 4 bytes of the header are
// the size of the last file in the body
header_adress=8;
while (header_adress<header_read_end)
{
fseek(act_file, header_adress, SEEK_SET);
char* act_filename=NULL;
long act_pos=ftell(act_file);
int act_string_length=0;
char act_char=0;
while (true)
{
if(!fread(&act_char, sizeof(char), 1, act_file))
{
fprintf(stderr, "Unexpected EOF while reading; line=%u\n", __LINE__);
return 1;
}
if (act_char!=0)
act_string_length++;
else
break;
}
act_filename=(char*) malloc(sizeof(char)*(act_string_length+1));
fseek(act_file, act_pos, SEEK_SET);
for (int j=0; j<=act_string_length; j++)
{
if(!fread(act_filename+j, sizeof(char), 1, act_file))
{
fprintf(stderr, "Unexpected EOF while reading; line=%u\n", __LINE__);
return 1;
}
}
if(!fread(&act_file_length, sizeof(unsigned long), 1, act_file))
{
fprintf(stderr, "Unexpected EOF while reading; line=%u\n", __LINE__);
return 1;
}
header_adress=ftell(act_file);
output_file=fopen(act_filename, "w+b");
if (output_file==NULL)
{
fprintf(stderr, "Could not open file %s\n", act_filename);
return 1;
}
printf("filename: %s\n", act_filename);
act_pos=ftell(act_file);
// Reading and outputting the file
fseek(act_file, body_adress, SEEK_SET);
for (unsigned long l=0; l<act_file_length; l++)
{
char act_byte;
if(!fread(&act_byte, sizeof(char), 1, act_file))
{
fprintf(stderr, "Unexpected EOF while reading; line=%u\n", __LINE__);
return 1;
}
if(!fwrite(&act_byte, sizeof(char), 1, output_file))
{
fprintf(stderr, "Could not write to file:%s; line=%u\n",
act_filename, __LINE__);
return 1;
}
}
// End outputting file
fseek(act_file, act_pos, SEEK_SET);
body_adress+=act_file_length;
fclose(output_file);
}
fclose(act_file);
}
}
Microids wurde von Ubi gekauft. Daher gibt es das Forum nicht mehr. Ich hätte sonst gerne ein wenig die Beiträge zitiert (alleine schon um euch ein wenig zu ärgern und zu verunsichern

@KlyX:
Um dein Argument z.u widerlegen:
Ich weiß jedoch noch, dass im Forum so etwas im Stil stand (in meine saloppe Sprache gefasst): du hast das Spiel gekauft, okay, und die EULA erlaubt es dir es zu spielen, aber du hast nicht das Recht gekauft dir deine Audio-Soundtrack-CD zu brennen, genauso wenig wie du die Rechte an den Audio-Dateien besitzt, die besitzen nämlich WIR (genauso wie das ganze Spiel UNSER Eigentum ist, DU hast nur ein Benutzungsrecht im Sinne von spiele). Damit ist das Rippen der Sounds VERBOTEN (ich meine sie haben sogar etwas von rechtlichen Konsequenzen gegen Anleitungen zum Rippen geschrieben).
Aber: Microids gibt es nicht mehr (s. oben). Ich hätte mir sowieso nichts aus ihren Drohungen gemacht.
PS: Gestern hatte mich dann doch ein wenig die Syberia-Hack-Sucht gepackt, so dass ich in der Zeit die dringend für Übungszettel geboten gewesen wäre, gecodet habe. Grundlegend funktioniert er schon ziemlich gut (wenn ich die Klausur in Lineare Algebra nicht schaffe, bist du schuld KlyX -> yeah, ich habe einen Sündenbock

PPS: Die Musikdateien sind in MinimalRes.syb und fangen alle mit m_ an und enden mit .mp3
PPPS: Es ist auch möglich mehrere Dateinamen zu übergeben also z. B.
sybdecode.exe file1.syb file2.syb file3.syb
Würde aber abraten davon Gebrauch zu machen.
PPPPS: Diese Version ist ausdrücklich eine Beta-Version. Bugs habe ich keine gefunden, aber man weiß nie
PPPPPS: Bräuchte irgendjemand auch einen Packer für die syb-Dateien, um aus diversen Dateien eine syb-Datei zu bauen. Könnte man sicher sehr einfach bauen. Aber braucht das jemand. Vielleicht weil man ein MOD für Syberia erstellen will. Es wäre auch nicht viel mehr Arbeit als das Schreiben des Entpackers.
Datei main.cpp:
#include <cstdio>
#include <cstdlib>
#include <cstring>
const unsigned long identifier=0x47425856;
int main(int argc, char** argv)
{
FILE* act_file;
FILE* output_file;
if (argc<2)
{
printf("Usage: sybdecode filename.syb\n");
return 1;
}
for (int i=1; i<argc; i++)
{
unsigned long read_identifier;
unsigned long body_adress;
unsigned long header_adress;
unsigned long act_file_length;
unsigned long header_read_end;
act_file=fopen(argv, "rb");
if (act_file==NULL)
{
fprintf(stderr, "Could not open file %s\n", argv);
return 1;
}
if(!fread(&read_identifier, sizeof(unsigned long), 1, act_file))
{
fprintf(stderr, "Unexpected EOF while reading; line=%u\n", __LINE__);
return 1;
}
if (read_identifier!=identifier)
{
printf("Invalid file: identifier must be VXBG\n");
}
if(!fread(&header_read_end, sizeof(unsigned long), 1, act_file))
{
fprintf(stderr, "Unexpected EOF while reading; line=%u\n", __LINE__);
return 1;
}
header_read_end+=4; // The first 4 bytes (identifier) do not count
body_adress=header_read_end+4; // The last 4 bytes of the header are
// the size of the last file in the body
header_adress=8;
while (header_adress<header_read_end)
{
fseek(act_file, header_adress, SEEK_SET);
char* act_filename=NULL;
long act_pos=ftell(act_file);
int act_string_length=0;
char act_char=0;
while (true)
{
if(!fread(&act_char, sizeof(char), 1, act_file))
{
fprintf(stderr, "Unexpected EOF while reading; line=%u\n", __LINE__);
return 1;
}
if (act_char!=0)
act_string_length++;
else
break;
}
act_filename=(char*) malloc(sizeof(char)*(act_string_length+1));
fseek(act_file, act_pos, SEEK_SET);
for (int j=0; j<=act_string_length; j++)
{
if(!fread(act_filename+j, sizeof(char), 1, act_file))
{
fprintf(stderr, "Unexpected EOF while reading; line=%u\n", __LINE__);
return 1;
}
}
if(!fread(&act_file_length, sizeof(unsigned long), 1, act_file))
{
fprintf(stderr, "Unexpected EOF while reading; line=%u\n", __LINE__);
return 1;
}
header_adress=ftell(act_file);
output_file=fopen(act_filename, "w+b");
if (output_file==NULL)
{
fprintf(stderr, "Could not open file %s\n", act_filename);
return 1;
}
printf("filename: %s\n", act_filename);
act_pos=ftell(act_file);
// Reading and outputting the file
fseek(act_file, body_adress, SEEK_SET);
for (unsigned long l=0; l<act_file_length; l++)
{
char act_byte;
if(!fread(&act_byte, sizeof(char), 1, act_file))
{
fprintf(stderr, "Unexpected EOF while reading; line=%u\n", __LINE__);
return 1;
}
if(!fwrite(&act_byte, sizeof(char), 1, output_file))
{
fprintf(stderr, "Could not write to file:%s; line=%u\n",
act_filename, __LINE__);
return 1;
}
}
// End outputting file
fseek(act_file, act_pos, SEEK_SET);
body_adress+=act_file_length;
fclose(output_file);
}
fclose(act_file);
}
}
Der Zyklustyp einer Permutation ist konjugationsinvariant.
- TheSearcher
- Forscher
- Beiträge: 753
- Registriert: 10.10.2004, 13:21
- Wohnort: Magdeburg
- Alter: 39
Nur dass es keine Missverständnisse hier gibt:
das ist keine fertige Version von meinem Programm. Ich habe beispielsweise eben noch ein Speicherleck gefunden, welches ich in Kürze beseitigen will. Die 2 Wochen haben also schon ihren Grund (ich habe geschrieben: "bis ich fertig bin"; das Programm ist noch nicht fertig).
exe-Dateien kann man glaube ich nicht im Forum hochladen (mit gutem Grund, das könnte man prima zum Viren verteilen nutzen).
Und der Zugriff auf den privaten Webspace an der Uni ist relativ aufwändig (nur über ssh möglich und außerdem muss man sich dann auch immer mit dem Sicherheitssystem AFS herumschlagen).
Da ich plane das ganze Programm auch in den Wiki aufzunehmen (inklusive Dokumentation des Dateiformats der syb-Dateien) bietet sich die Variante über den Quellcode an.
Außerdem besteht noch der Vorteil, dass sich jeder seine individuelle Variante compilieren kann: ich eine Spezialvariante für Debug-Zwecke (mit zusätzlichem Debug- und Profilercode), der Typ mit der neuen AMD64-CPU sich seine 64-Bit-Variante, der 08/15-Anwender eine Version mit dem Linker-Flag -s (sorgt dafür, dass unnötiges Zeug aus der exe entfernt wird), usw.
Zum Urheberrecht: irgendwie habe ich die Vermutung, dass sich der Eintrag im Syberia-Forum auf das Urheberrecht der USA (oder Kanada) bezieht. Ich habe nämlich noch nie in Deutschland von einem derartigen Fall gehört. Vielleicht musst du, KlyX, also doch als Sündenbock herhalten
@KlyX
Um mal als Korinthenkacker aufzutreten: "Dev-C++" von Bloodshed ist kein C/C++-Compiler. Der Compiler ist "Gnu C++" in der Mingw-Variante, welcher bei Dev-C++ mitgeliefert wird. Dev-C++ ist nur eine grafische Oberfläche für diesen Compiler. Nur weil das immer wieder in allen möglichen Foren durcheinander gebracht wird.
das ist keine fertige Version von meinem Programm. Ich habe beispielsweise eben noch ein Speicherleck gefunden, welches ich in Kürze beseitigen will. Die 2 Wochen haben also schon ihren Grund (ich habe geschrieben: "bis ich fertig bin"; das Programm ist noch nicht fertig).
exe-Dateien kann man glaube ich nicht im Forum hochladen (mit gutem Grund, das könnte man prima zum Viren verteilen nutzen).
Und der Zugriff auf den privaten Webspace an der Uni ist relativ aufwändig (nur über ssh möglich und außerdem muss man sich dann auch immer mit dem Sicherheitssystem AFS herumschlagen).
Da ich plane das ganze Programm auch in den Wiki aufzunehmen (inklusive Dokumentation des Dateiformats der syb-Dateien) bietet sich die Variante über den Quellcode an.
Außerdem besteht noch der Vorteil, dass sich jeder seine individuelle Variante compilieren kann: ich eine Spezialvariante für Debug-Zwecke (mit zusätzlichem Debug- und Profilercode), der Typ mit der neuen AMD64-CPU sich seine 64-Bit-Variante, der 08/15-Anwender eine Version mit dem Linker-Flag -s (sorgt dafür, dass unnötiges Zeug aus der exe entfernt wird), usw.
Zum Urheberrecht: irgendwie habe ich die Vermutung, dass sich der Eintrag im Syberia-Forum auf das Urheberrecht der USA (oder Kanada) bezieht. Ich habe nämlich noch nie in Deutschland von einem derartigen Fall gehört. Vielleicht musst du, KlyX, also doch als Sündenbock herhalten

@KlyX
Um mal als Korinthenkacker aufzutreten: "Dev-C++" von Bloodshed ist kein C/C++-Compiler. Der Compiler ist "Gnu C++" in der Mingw-Variante, welcher bei Dev-C++ mitgeliefert wird. Dev-C++ ist nur eine grafische Oberfläche für diesen Compiler. Nur weil das immer wieder in allen möglichen Foren durcheinander gebracht wird.
Der Zyklustyp einer Permutation ist konjugationsinvariant.
- KlyX
- Forscher
- Beiträge: 4445
- Registriert: 05.02.2004, 17:37
- Wohnort: Langenthal, Schweiz
- Alter: 40
- Kontaktdaten:
Ach so
alles klar. Dachte schon: huch, seit wann haben Compiler GUIs... da muss wohl ein anderer Compiler am werk sein. Und dass es der GNU C++ ist war eigentlich klar, so von wegen OpenSource und so 
Und was das fertige Programm anbelagt: Das was es schon kann, ist schon ne gute Sache
Mehr brauch ich persönlich gar nicht 


Und was das fertige Programm anbelagt: Das was es schon kann, ist schon ne gute Sache


- TheSearcher
- Forscher
- Beiträge: 753
- Registriert: 10.10.2004, 13:21
- Wohnort: Magdeburg
- Alter: 39
Zum Thema Speicherleck:
jetzt, wo ich nochmal 5 Minuten Zeit für das Programm habe, kann ich folgendes Bugfix für das Speicherleck mitteilen:
unter der Zeile:
printf("filename: %s\n", act_filename);
füge folgende Zeile ein:
free(act_filename);
(dannach natürlich neu compilieren).
Damit sollte das Problem mit dem Speicherleck beseitigt sein.
jetzt, wo ich nochmal 5 Minuten Zeit für das Programm habe, kann ich folgendes Bugfix für das Speicherleck mitteilen:
unter der Zeile:
printf("filename: %s\n", act_filename);
füge folgende Zeile ein:
free(act_filename);
(dannach natürlich neu compilieren).
Damit sollte das Problem mit dem Speicherleck beseitigt sein.
Der Zyklustyp einer Permutation ist konjugationsinvariant.
Danke für das Tool. Ich werde es ausprobieren, sobald ich wieder einen Rechner zur Verfügung habe, auf dem ich Syberia II installieren kann.
Bei solch typischen Problemen mit C lernt man schnell die Vorteile objektorientierter Programmierung mit C++ schätzen: Da würde man die Freigabe des Speichers in den Destruktor eines Dateinamen-Objektes packen und müßte sich nicht mehr darum kümmern, wo der Speicher im Programmablauf freizugeben ist (oder man verwendet gleich einen std::string).
Das Speicherleck ist damit zwar weg, aber dafür wird nach der Freigabe des Speichers nochmal auf act_filename zugegriffen, nämlich in der Fehlerbehandlung beim Schreiben einer Datei.TheSearcher hat geschrieben:unter der Zeile:
printf("filename: %s\n", act_filename);
füge folgende Zeile ein:
free(act_filename);
(dannach natürlich neu compilieren).
Damit sollte das Problem mit dem Speicherleck beseitigt sein.
Bei solch typischen Problemen mit C lernt man schnell die Vorteile objektorientierter Programmierung mit C++ schätzen: Da würde man die Freigabe des Speichers in den Destruktor eines Dateinamen-Objektes packen und müßte sich nicht mehr darum kümmern, wo der Speicher im Programmablauf freizugeben ist (oder man verwendet gleich einen std::string).

Bartle-Test: ESAK (87/53/47/13)