所以一般来说我有一个这种结构的对象:
typedef struct WAVStream
{
std::ofstream stream;
short* outBuffer;
int* inBuffer;
char* streamFileName;
int outBufPosition;
int sizeCheck;
int savedParts;
int savedBytes;
bool isHeaderCreated;
} WAVStream;
到目前为止,这个对象已经初始化:
WAVStream wavStreams[8];
当我在初始化后显示字段内部的内容时,我在std::ofstream field
处到处获得0和一些内存块地址。
但现在我需要有可能从config指定数组大小。因为WAVStream wavStreams[size]
- size参数不是常量。我需要将我的数组分配更改为:
int size = 8;
WAVStream* wavStreams = (WAVStream*) malloc(sizeof(WAVStream) * size);
现在我的程序崩溃了。我没有收到任何错误日志,但只是崩溃,我不知道如何调试它。我的想法是:初始化wavStreams
中的值,使其与上一个创建方法中的值相同。现在我看到随机数,所以要解决它:
int size = 8;
WAVStream* wavStreams = (WAVStream*) malloc(sizeof(WAVStream) * size);
for (int i = 0; i < size; i++)
{
wavStreams[i].inBuffer = 0;
wavStreams[i].isHeaderCreated = false;
wavStreams[i].outBuffer = 0;
wavStreams[i].outBufPosition = 0;
wavStreams[i].savedBytes = 0;
wavStreams[i].savedParts = 0;
wavStreams[i].sizeCheck = 0;
// wavStreams[i].stream = ???
wavStreams[i].streamFileName = "";
cout<< "\n";
cout<< " " << wavStreams[i].inBuffer;
cout<< " " << wavStreams[i].isHeaderCreated;
cout<< " " << wavStreams[i].outBuffer;
cout<< " " << wavStreams[i].outBufPosition;
cout<< " " << wavStreams[i].savedBytes;
cout<< " " << wavStreams[i].savedParts;
cout<< " " << wavStreams[i].sizeCheck;
// cout<< " " << wavStreams[i].stream;
cout<< " " << wavStreams[i].streamFileName;
cout<< "\n";
}
每当我想以某种方式触摸std::ofstream
我的程序崩溃时。我无法显示价值。我不知道如何正确初始化这个字段。 WAVStream wavStreams[8]
是自己做的。如何手动完成?