0

私は次のクラスを持っています:

class clsJoinFeeder
{
public:
    vector<vector<unsigned char> > UnsignedChars;
};

ここで、符号なし文字のベクトルをクラスに追加したいと思います。私はこのようにそれをやろうとしました:

void CBinLoader::LoadJoinFeaturesFromCompiledDat(clsJoinFeeder &uJoinFeeder)
{
    for (unsigned int y=0;y<2;y++)
    {
        for (unsigned int x=0;x<17;x++)
        {
            pLoadSmallFloatMap(uJoinFeeder);
            pLoadBigUnsignedCharMap(uJoinFeeder);
        }
    }
}

void CBinLoader::pLoadBigUnsignedCharMap(clsJoinFeeder &uJoinFeeder)
{
    unsigned int iItemsCount = 0;
    fread(&iItemsCount,sizeof(unsigned int),1,m_infile);

    unsigned long iByteSizeActualData = 0;
    fread(&iByteSizeActualData,sizeof(unsigned long),1,m_infile);

    vector<unsigned char>nChars;
    nChars.resize(iItemsCount+1);

    fread(&nChars[0],iByteSizeActualData,1,m_infile); //works fine. nChars is correctly filled

    uJoinFeeder.UnsignedChars.push_back(nChars); //here the crash occurs
}

正常にコンパイルされますが、実行時に次の行でヒープ割り当てエラーが発生してクラッシュします。

uJoinFeeder.UnsignedChars.push_back(nChars);

問題を解決するにはどうすればよいですか? 自分のミスも見当たりません。

編集:

お手伝いありがとう!「iByteSizeActualData」は、Kühl 氏が述べたように間違っていました。

4

2 に答える 2