阵列初始化更改后程序崩溃

时间:2015-02-12 04:39:09

标签: c++ arrays ofstream

所以一般来说我有一个这种结构的对象:

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]是自己做的。如何手动完成?

0 个答案:

没有答案