各位哥哥姐姐们救救我吧,我不知道是哪错了QAQ
这是struct:
struct int_list {
int* data; // pointer to the underlying array
int size; // # of elements from user's perspective
int capacity; // length of underlying array
};
这是makenew:
int_list make_new(int cap = 5)
{
int_list newlist;
if(cap <= 0)
cmpt::error("Capacity should be more than 0. ");
newlist.size = 0;
newlist.capacity = cap;
newlist.data = new int[cap];
return newlist;
}
(前两个是不能改的)
这是append:
void append_right(int_list& arr, int n)
{
if (arr.size >= arr.capacity) {
arr.capacity = 2 * arr.capacity;
int* new_arr = new int[arr.capacity];
for(int i = 0; i < arr.size; ++i) {
new_arr[i] = arr.data[i];
}
delete[] arr.data;
for(int i = 0; i < arr.size; i++)
arr.data[i] = new_arr[i];
}
assert(arr.size < arr.capacity);
arr.data[arr.size] = n;
arr.size++;
}
这是读取txt:
int_list make_fromFile(const string& fname)
{
int_list test = make_new();
test.size = 0;
ifstream fin;
fin.open(fname);
int integer;
while(!fin.eof())
{
fin >> integer;
append_right(test,integer);
}
fin.close();
return test;
}
test是这样:
void make_fromFile_test()
{
cout << "Running make_fromFile_test()... ";
int_list arr = make_fromFile("test_small.txt");
writeln(arr);
cout << arr.size;
cout << "\nmake_fromFile_test() passed.\n";
}
顺便那个txt里面就两行数:
4 -2 0
8000 64 64 -125
然后我一run那个test,就会报错
munmap_chunk(): invalid pointer
Aborted (core dumped)
请问谁知道是为什么呀QAQQQ谢谢!!!