C ++ shared_ptr和从类中读取

时间:2011-08-01 14:00:05

标签: c++ shared-ptr

我有一个问题,从文件中简单读取共享几个对象之间的文件指针(它对我来说只是简单的istream,但不是当我使用istream指针的共享指针时)。

我正在尝试将整个文件读取到缓冲区(文件本身只有几行。

代码编译,但会引发分段错误。

使用shared_ptr的类:

RecordsSplitter::RecordsSplitter(char *filename):iStream( new ifstream(filename, ifstream::in|ifstream::binary))
{
}


string RecordsSplitter::buildRecord() {
       char *buffer;
        int buffer_length;
        iStream->seekg (0, ios::end)_
        buffer_length = iStream->tellg();
        cout << buffer_length;
        iStream->seekg(0, ios::beg);
        iStream->read(buffer,buffer_length);
        iStream->close();
        cout << buffer;

        return 0;
}







int main(int argc, char* argv[]) {
        RecordsSplitter *splitter;
        splitter = new RecordsSplitter(argv[2]);
        int return_num = splitter->buildRecord();
        return 0;
}

1 个答案:

答案 0 :(得分:0)

您声明了缓冲区但未在任何地方初始化它。 如果您愿意,可以在buildRecord函数或malloc的使用中使用它。

buffer = new char[buffer_length];

你的seg错误是由这个未初始化的指针引起的

别忘了清理!

delete[] buffer;