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 に答える