Visual Studio在重新编译程序的最开始时报告可能的堆损坏。这篇文章的作用是读取.txt文件以提供可供选择的字符串列表。
for循环顺利进行,直到程序终止并抛出错误结束。
我还提供所有调用的函数(如有必要)。
int main() {
title_board(NULL,NULL,NULL, NULL);
// settings file
open_file(DEFAULT_SETTING);
bool generate_mistake_log=read_bool(16);
bool show_instructions=read_bool(10);
int pass_threshold=read_int(13);
t_direction trans_dir=read_t_dir(7);
int sett_lines=lines_count(DEFAULT_SETTING);
int library_verse=sett_lines-LIB_START_VERSE;
string *file_library=new string[library_verse];
for (int i=0; i<sett_lines; i++) {
file_library[i]=read_string(i+LIB_START_VERSE);
cout << i+1 << ". " << file_library[i] << endl;
}
string FILE_NAME;
cout << "\nFILE INDEX: ";
int file_ind;
while (!(cin >> file_ind)) {
cout << "MISMATCH IN FILE INDEX: ";
reset_cin();
}
功能 lines_count 和 read_string
string read_string(int verse) {
open_file(DEFAULT_SETTING);
// it just opens a file, works fine
string temp_var;
for (int i=0; i<verse; i++)
getline(WordsFileInput, temp_var);
close_files();
return temp_var; }
int lines_count(string file_name) {
open_file(file_name);
int a=0;
string * temp_str = new string;
while (getline(WordsFileInput, *temp_str))
++a;
close_files();
return a; }
This is the output right before the error
这又是我的.txt文件的样子。
LEGEND:
1 =目标 - &gt;母亲
2 =母亲 - &gt;目标
3 =随机
变量:
VAR NAME:translation_direction
1
VAR NAME:show_instructions
假
VAR NAME:pass_threshold [%]
75
VAR NAME:generate_mistake_log
真
文件库:
文件/ dates.txt
文件/ isis.txt
文件/ music.txt
文件/ farm.txt
文件/ feminist.txt
文件/ food.txt
此致
答案 0 :(得分:1)
int library_verse=sett_lines-LIB_START_VERSE;
string *file_library=new string[library_verse];
您刚刚分配了file_library
数组。 file_library
数组的大小为sett_lines
减去LIB_START_VERSE
,无论它是什么。这两行代码说的是什么。您没有显示LIB_START_VERSE
设置的内容,但它很可能是某个正数,大于零。这一切的结果是数组的大小LIB_START_VERSE
小于sett_lines
值。
for (int i=0; i<sett_lines; i++) {
file_library[i]=read_string(i+LIB_START_VERSE);
...然后您立即开始初始化sett_lines
数组中的第一个file_library
经文条目。
您应该能够自己解决代码中的其余错误。