当我制作550(或更多)对象(包含ofstreams)的数组时,首先 509 对象是'好'对象(有文件等),但是其他对象是'错误的'。
不知道我弄错了什么。
也许需要特殊的ofstream初始化?
此问题适用于“调试”和“发布”版本。
代码(C ++)(在Microsoft Visual C ++ 2012下编译):
#include <iostream>
#include <fstream>
using namespace std;
class C {
int n;
ofstream f;
public:
C() {n=1;}
void Bind(char* filename);
};
void C::Bind(char* filename) {
f.open(filename,ios::binary);
if (!f) cout << "file " << filename << " Error..." << endl;
}
int main() {
C *c = new C[550];
for (int i=0;i<550;i++) {
char filename[256];
sprintf_s(filename, "file-%03d.bin", i);
c[i].Bind(filename);
}
return 0;
}
输出是:
file file-509.bin错误...
file file-510.bin错误...
file file-511.bin错误...
file file-512.bin错误...
file file-513.bin错误...
...... ......
这些509文件有什么神奇之处?
如何为包含550(或更多)对象的数组更正此代码?
谢谢!