Ich weiß, das ist wahrscheinlich etwas Grundsätzliches, die etwa 1000 mal gesprochen wurde, aber ich glaube, ich brauche Hilfe zu verstehen, warum die folgenden ein Segmentierungsfehler erzeugt:C++ char * [255] Herstellung von Segmentierungsfehler
char* outputPath = new char[255];
sprintf(outputPath, "/home/istrab/iStrabGUI Output/%s/%s/0/Frames",patientName, techName);
Die Ich frage mich, ob das der Grund dafür ist, dass ich nach etwas Nachforschung die Größe des Arrays auf 255 festgelegt habe, von dem ich weiß, dass es groß genug wäre, um den String zu halten, den ich schreiben möchte. Ich stellte auch sicher, dass es initialisiert wurde, bevor ich versuchte, darauf zu schreiben. Ich machte auch doppelt sicher, dass alle beteiligten Variablen früher im Code initialisiert wurden oder das Programm bis dahin verlassen hätte. Könnte ich das anders machen? Ist es in der Zeichenfolge selbst oder in der Art, wie ich das Array initialisiert habe?
Dieser Code geschrieben wurde mit Qt 4.8.6 in C++
Warum nicht ein String-Objekt anstelle eines Char-Arrays verwenden? Würde dir viele Kopfschmerzen ersparen. – DeathTails
'char outputPath [255]' wäre mehr idiomatische IMO. Außerdem gibt es Konstanten/Definitionen für eine maximale Pfadlänge, die Sie verwenden sollten (für Portabilität, wenn nichts anderes) –
Beenden Sie bereits die Verletzung der [Null eine Unendlichkeitsregel] (https://en.wikipedia.org/wiki/Zero_one_infinity_rule). – IInspectable