我是C++和微軟Visual Studio的新手,我目前正在爲我的數據結構類做一個實驗,我已經完成了我的代碼,但是當我構建並運行我的程序時,會拋出以下錯誤:沒有足夠的內存分配?
std::bad_alloc at memory location 0x0018C9C0.
我googled這個錯誤,我發現如果沒有足夠的內存分配給程序或程序試圖分配無限量的內存的東西,則會引發此錯誤。我試圖在程序屬性中分配更多內存,但這似乎沒有幫助。查看我的代碼,我找不到任何會引發此錯誤的內容。這裏是我的代碼以供參考:
#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;
}
我試圖創建一個指向發現,它顯示了錯誤的地址,但我無法找到它。任何幫助是極大的讚賞。
編輯:對不起,我沒有讓自己清楚,我的輸入是格式爲csv的txt文件。我收集信息,並在每行的第一列中放置30個空格減去值的長度,其餘的值放置20個空格減去值的長度,除非沒有值,其中I用19個空格放置一個零。
示例輸入:
Albania,14,29365,43301,,,,,,,13,27867,41066,,,,,,,1,1498,2235,,,
'if(j = 0)'這顯然是錯誤的。也許你的意思是'if(j == 0)' – Ari0nhh
只是一個安全的細節,但我建議把finalLine聲明爲const,所以你確定它不會在循環的某個地方展開。 (據我所知,它不是,但它更像是一種安全預防措施,再加上它讓你少擔心一件事) –
你的第一步應該是在調試器中運行你的代碼,並確定代碼中的哪個部分發生錯誤。 – kfsone