int main()
{
    stxxl::config* config = stxxl::config::get_instance();

    stxxl::disk_config disk1("/tmp/stxxl-###.tmp", 16 * 1024 * 1024,
                             "syscall autogrow=no");
    disk1.unlink_on_open = true;
    disk1.direct = stxxl::disk_config::DIRECT_OFF;
    config->add_disk(disk1);

    vector_type* vector = new vector_type();

    try {
        while (true)
            vector->push_back(0);
    }
    catch (std::exception& e) {
        STXXL_ERRMSG("Caught exception: " << e.what());
        delete vector; // here it will crash in block_manager::delete_block(bid)
    }

    STXXL_MSG("Delete done, all is well.");

    return 0;
}
Beispiel #2
0
int fileSysTest() {
  Vdisk disk1("filesys1", 100, 500);
  FileSys fsys("filesys1");
  fsys.makeFile("file1");
  fsys.makeFile("file2");

  std::string bfile;

  for (int i = 1; i <= 1500; ++i) {
    bfile += "1";
  }

  std::vector<std::string> blocks = block(bfile, 500);
  int blocknumber = 0;

  for (unsigned int i = 0; i < blocks.size(); ++i) {
    blocknumber = fsys.addBlock("file1", blocks[i]);
  }

  fsys.deleteBlock("file1", fsys.getFirstBlock("file1"));

  for (unsigned int i = 1; i <= 2000; ++i) {
    bfile += "2";
  }

  for (unsigned int i = 0; i < blocks.size(); ++i) {
    blocknumber = fsys.addBlock("file2", blocks[i]);
  }

  fsys.deleteBlock("file2", blocknumber);

  return 1;
}