我正在尝试从一个文件中读取一个数组,该文件的数组内容存储在一个非常长的行上的逗号分隔列表中(大约346112个元素长)。
我有一个有时可以工作的函数,然后其他时候失败并出现分段错误(核心转储)错误。
此代码有什么问题?
int* read(std::string fileName)
{
std::ifstream input(fileName.c_str());
std::string line;
getline(input, line);
std::string str = line;
std::vector<int> vect;
std::stringstream ss(str);
int i = 0;
while (ss >> i)
{
vect.push_back(i);
if (ss.peek() == ',')
ss.ignore();
}
input.close();
return &vect[0];
}
然后我称之为:
int* h_w1 = NULL;
h_w1 = (int*)malloc(sizeof(int) * 346112);
h_w1 = read("file.txt");
这段代码到底有什么问题?