Ich bin neu in C++ und Microsoft Visual Studio und ich arbeite derzeit an einem Labor für meine Datenstrukturen Klasse, ich habe meinen Code fertig, aber wenn ich mein Programm erstellen und ausführen, wirft es diesen Fehler:Nicht genügend Speicherzuweisung?
std::bad_alloc at memory location 0x0018C9C0.
Ich googelte diesen Fehler und ich fand, dass dieser Fehler ausgelöst wird, wenn nicht genügend Speicher für das Programm reserviert ist oder das Programm versucht, eine unendliche Menge an Speicher für etwas zuzuordnen. Ich habe versucht, mehr Speicher in den Programmeigenschaften zu reservieren, aber das schien nicht zu helfen. Wenn ich meinen Code überblicke, kann ich nichts finden, was diesen Fehler verursachen würde. Hier ist mein Code als Referenz:
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
int main() {
string line;
string value;
string linesArray[200];
int i = 0;
int j = 0;
int finalLine = 158;
getline(cin, line, '\n');
getline(cin, line, '\n');
/* First Line */
for (i; i < finalLine; ++i) {
getline(cin, line, '\n');
for (j; j <= 24; ++j) {
if (j = 0) {
line = line.replace(line.find(','), line.find_first_of(','), string(30 - line.find(','), ' '));
}
line = line.replace(line.find(','), line.find_first_of(','), string(20 - line.find(','), ' '));
}
linesArray[i] = value;
cout << linesArray[i] << endl;
}
return 0;
}
Ich habe versucht, einen Zeiger zu schaffen, die Adresse zu finden, die es in dem Fehler zeigt, aber ich konnte es nicht finden. Jede Hilfe wird sehr geschätzt.
EDIT: Sorry, dass ich mich nicht klar gemacht habe, meine Eingabe ist eine TXT-Datei im Format eines CSV. Ich nehme die Informationen auf und auf die erste Spalte jeder Zeile platziere ich 30 Leerzeichen abzüglich der Länge des Wertes und auf den Rest der Werte platziere ich 20 Leerzeichen abzüglich der Länge des Wertes, außer es gibt keinen Wert, in dem ich setze eine Null mit 19 Leerzeichen.
Beispiel Eingabe:
Albania,14,29365,43301,,,,,,,13,27867,41066,,,,,,,1,1498,2235,,,
'if (j = 0)' das ist eindeutig falsch. Vielleicht meinst du 'if (j == 0) ' – Ari0nhh
Nur ein Sicherheitsdetail, aber ich schlage vor, finalLine als const zu deklarieren, damit du sicher bist, dass es sich nicht irgendwo in der Schleife ausdehnt. (Soweit ich sehe es nicht, aber es ist mehr eine Sicherheitsmaßnahme und es gibt Ihnen eine Sache weniger Sorgen) –
Ihre erste Vorgehensweise sollte sein, Ihren Code in einem Debugger ausführen und bestimmen, wo in Ihrem Code Fehler tritt auf. – kfsone