このエラーに関する多くの投稿を見てきました。しかし、メモリを動的に予約したり、デストラクタで何かを行ったりすることはありません。このプログラムは、オペレーティング システムでシリンダを選択するための SSJF アルゴリズムです。
IO という単純なクラスがあります。
class IO
{
public:
IO();
IO(int,int);
void setIO(int,int);
~IO();
int trackNo;
int arrival;
int start;
int end;
bool finished;
};
クラスの実装は次のとおりです::
IO::IO(int arr, int tNum)
{
this->arrival = arr;
this->trackNo = tNum;
this->start = 0;
this->end = 0;
}
IO::IO()
{
}
IO::~IO()
{
}
void IO::setIO(int t1, int t2)
{
this->trackNo = t1;
this->arrival = t2;
}
最後に、メイン プログラムの一部を次に示します。
list<IO> myList;
....
myList.push_back(tmpIO); //Add to the list
...
list<IO> wt_list;
そして後で私はいくつかの操作をしようとしています。関係のない部分を一部削除しました。
//list<IO>::iterator itMin;
while(myList.size()>0)
{
//If it is the first input just get it
if(f)
{
IO selected = myList.front();
curr_time += selected.arrival + selected.trackNo;
f=false;
cout << selected.arrival<<endl;
lastPos = selected.trackNo;
myList.pop_front();
}
//Check if there is any item to add to queue
while(myList.front().arrival < curr_time)
{
wt_list.push_back(myList.front());
myList.pop_front(); //Error is coming from this line
}
while(wt_list.size()>0)
{
}
エラーメッセージ:
malloc: * オブジェクト 0x10f68b3e0 のエラー: 解放されるポインターが割り当てられませんでした *デバッグするために malloc_error_break にブレークポイントを設定します
誰でも私を助けて、このエラーが発生する理由とそれをスキップする方法を説明できますか?