使用済み座標構造体のインスタンスをメモリから削除するつもり for (unsigned int i = 0; i < CoordsList.size(); i++){ delete CoordsList[i]; } CoordsList.clear(); //オートポインタなので不要とは思うが、念のためベクタをクリア
使っている処理系はBorland Developpers Studio 2006のC++Builder10 なの ですが、デバッガでステップ実行したら、>>630で書いたコードまで終了した ところで、ソースファイルControls.pasが見つかりません。というダイアログ が開き、パスを入力するようになりました。 Controls.pasって多分C++BuilderのGUI関連のライブラリのソースで、普通に インストールすれば、ユーザーが知らなくても処理に必要なら処理系は知ってる はずと思うのですが... for (unsigned int i = 0; i < CoordsList.size(); i++){ delete CoordsList[i]; } の部分をコメントアウトするとメモリリークしてるかもしれませんが正常終了します。 for (unsigned int i = 0; i < CoordsList.size(); i++){ SCoord* pTempCoord; pTempCoord = CoordsList[i]; delete pTempCoord; } や for (unsigned int i = 0; i < CoordsList.size(); i++){ delete (SCoord*)CoordsList[i]; } に、変更しても同じなので、ポインタのデータサイズがわからなくなると いった問題ではなさそうです。
>>636 標準C++の範囲では、見たところソースコードに問題ない。 あくまでも趣味の違いだが、SCoord生成時はnew代入じゃなく初期化時new、削除はイテレータを使うくらいか?: Sccord* pTempCoord = new SCoord; for (vector<SCoord*>::iterator it = CoordsList.begin(); it != CoordsList.end(); ++it) delete *it;