私は次のクラスを持っています:
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 氏が述べたように間違っていました。