gpt4 book ai didi

c++ - 动态分配的整数数组在函数结束时删除自身

转载 作者:行者123 更新时间:2023-11-27 23:10:40 25 4
gpt4 key购买 nike

该函数应该从文本文件中读取整数。第一个数字将告诉输入文件中有多少个数字。

我首先将接收整数的指针初始化为NULL,但由于某种原因,当函数结束并返回时,它仍然指向NULL。

bool readFileToArray(const char* fileName, int *arr, int &size)
{
ifstream input = ifstream(fileName);
int i, num;

// check if file opened successfully and allow only non negative integers to be read as num of elements
if (!input.is_open() || !(input >> size) || size < 0)
return wasError(input);

// allocate an array of 'size' size
arr = new int[size];

for (i = 0; i < size; i++)
{
input >> num;

// check for illegal input
if (input.fail())
return wasError(input);
else
arr[i] = num;
}

// given size and actual size mismatch
if (i != size || !input.eof())
return wasError(input);

// if file opening and writing ended successfully
return false;
}

最佳答案

为了返回分配的指针,您需要使 arr 成为一个引用,否则您只是在本地泄漏一个指针。

改变:

bool readFileToArray(const char* fileName, int *arr, int &size)

到:

bool readFileToArray(const char* fileName, int *&arr, int &size)

同时考虑使用更惯用的 C++,例如 std::stringstd::vector,而不是 C 风格的 char *字符串和原始数组/指针。

关于c++ - 动态分配的整数数组在函数结束时删除自身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20571788/

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