1

我有以下代码,这是一个非常简单的测试,但 VS 拒绝运行它:

stxxl::syscall_file OutputFile("Data/test.bin", stxxl::file::RDWR | stxxl::file::CREAT | stxxl::file::DIRECT);
typedef stxxl::VECTOR_GENERATOR<struct Rectangle, 8, 2, 524288>::result vector_type;
vector_type rects(&OutputFile);

该程序在第 3 行的内存位置产生运行时错误。我究竟做错了什么?我正在为 64 位平台编译程序。在调试模式下,如果我按继续,程序将恢复并毫无问题地执行。

4

1 回答 1

0

考虑以下示例:

#include <stxxl/io>
#include <stxxl/vector>  
#include <iostream>

struct Rectangle { 
  int x; 
  Rectangle() = default;
};  

int main() {
  stxxl::syscall_file OutputFile("/tmp/test.bin", stxxl::file::RDWR |     
                      stxxl::file::CREAT | stxxl::file::DIRECT);
  typedef stxxl::VECTOR_GENERATOR<Rectangle, 8, 2, 524288>::result  vector_type;
  vector_type rects(&OutputFile);

  Rectangle my_rectangle;

  for (std::size_t i = 0; i < 1024 * 1024 * 1024; ++i)       
    rects.push_back(my_rectangle);

  return 0;
}

当设备上没有足够的空间时,很容易引发错误。你能发布你的运行时错误吗?

于 2016-01-16T19:07:11.683 回答