gpt4 book ai didi

c++ - 读取文件时堆损坏

转载 作者:行者123 更新时间:2023-11-28 05:51:45 25 4
gpt4 key购买 nike

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_countread_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 = target -> mother

2 = mother -> target

3 = random

VARIABLES:

VAR NAME: translation_direction

1

VAR NAME: show_instructions

false

VAR NAME: pass_threshold [%]

75

VAR NAME: generate_mistake_log

true

FILES LIBRARY:

files/dates.txt

files/isis.txt

files/music.txt

files/farm.txt

files/feminist.txt

files/food.txt

问候

最佳答案

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);

...然后您立即开始初始化 file_library 数组中的第一个 sett_lines 节条目。

您应该能够自己找出代码中的其余错误。

关于c++ - 读取文件时堆损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35114443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com