在 ifstream 中使用 getline() 时出现 EXC_BAD_ACCESS 错误

问题描述

我最近在使用 Xcode 用 C++ 进行开发时经常遇到这个 EXC_BAD_ACCESS 问题。这一次,我想不出哪里出了问题。

我有这个应该足够简单的函数,只是一种计算文件中有多少行的方法

int getNumLines(string file)
{
    int lineCount = 0;
    string line;
    ifstream textFile;
    textFile.open(file);
    if( textFile.is_open() && !textFile.ios_base::fail() )
    {
        while(getline(textFile,line))
        {
            lineCount++;
        }
    }
    textFile.close();
    return lineCount;
}

每次运行我的代码时,我都会得到这行导致 fstream文件错误代码错误

线程 1:EXC_BAD_ACCESS(代码=1,地址=0x7000000070)

这是导致此错误的原因:

image

我不确定是什么导致了这个问题。僵尸对象似乎无法帮助我找到问题的根源,或者我可能只是不了解如何正确启用它们。

解决方法

感谢您的帮助。我发现问题在于我如何处理我创建的对象中的数组。我将所有内容都移到 std::array 而不是 int* 并且我的内存错误消失了。