vectorのついて
昨日、この質問コーナーでDirectXとC++を使って、文字を出力すること
について質問させていただきました。的確なアドバイスにより、昨日の
問題は解決したのですが、新たな問題が発生しました。
ちょっと汚いプログラムですが、
for(int i=0; i< strlen(Text); i++)
{
if(IsKanji1st(Text[i])){
NovelChara* Chara=new NovelChara();
Chara->CreateChara(&Text[i], size, size, FontName);
CharaList.push_back(Chara);
i++;
}else{
NovelChara* Chara= new NovelChara();
Chara->CreateChara(&Text[i],size,size, FontName);
CharaList.push_back(Chara);
}
}
のプログラムなんですが、汚いプログラムなんで説明を加えますと、
まず、文字を一文字ずつ作成して格納していくプログラムなのですが、
NovelCharaクラスは一文字のテクスチャ情報を格納するクラス。
それを作って、CreateCharaメソッドを使ってAPIを利用して一文字
の文字画像を作成。それを、CharaListというvectorコンテナに格納
するプログラムです。vector<NovelChara* > CharaList
という感じです。これを使い、文章文字を作成していたのですが、
マップ間を移動するたびにマップ内にいるキャラクターの会話文の生成
と前のマップで作った会話文の破棄を繰り返していたのですが、3往復
マップ間を移動したところで、エラーがでました。
デバッグで確認してみると、vector<NovelChara*> に文字を格納している途中で、
for integer overflow
if (_Count <= 0)
_Count = 0;
else if (((_SIZT)(-1) / _Count) < sizeof (_Ty))
_THROW_NCEE(std::bad_alloc, NULL);
// allocate storage for _Count elements of type _Ty
return ((_Ty _FARQ *)::operator new(_Count * sizeof (_Ty)));
}
のreturn のところで、ブレークポイントが発生しましたとなって、
とまってしまいます。vector内部は全くわからないので、どなたか
このエラーが何が原因で発生しているものなのか知っている方がいらっしゃればアドバイスをお願いしたいのですが