使用字符串reserve()时出现分段错误

时间:2011-09-18 14:10:52

标签: c++ string segmentation-fault

我正在尝试按照this page中的示例将文本文件的内容读取到字符串对象。到目前为止,这就是我所拥有的:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

...

// char* filename is a given parameter
ifstream in (filename, ios::in|ios::ate);
if (in.is_open()) {
    size_t filesize;
    filesize = in.tellg();
    string aux;
    aux.reserve(filesize);
    in.seekg(0);
    while (!in.eof()) {
      aux += in.get();
    }
    in.close();
    // From here, I would use aux to process the contents of the file
} else {
  // Couldn't open file
}

但是,我在调用aux.reserve(filesize)时遇到了分段错误,因为我是C / C ++新手而且我还不太了解如何处理内存管理,所以我真的陷入困境。

为了记录,我知道一些Java,PHP和C#。我正在尝试阅读的文件长度为666,239(~650 KB)。我在Ubuntu 11.4中使用Code :: Blocks,默认情况下几乎都是,所以它使用的是g ++的最后一个稳定版本。在此先感谢您的帮助!

0 个答案:

没有答案