C++ std::stack ポインタ
Posted: 2013年6月19日(水) 21:28
VC++2008
windows7
corei5
などの環境でスタックを用いたプログラミングをしているのですが,バグが解決できず困っています.
以下に実際のプログラムを模したプログラムを載せました.
このようにstackを配列にしたプログラム(これが目的)を作ったのですが,コンパイルは通りますが,
実行時に
~.exeは動作を終了しました.と表示されてしまいます.
puts("")文などで古典的なデバックをしたところ,top()の前で処理が止まっていることが判明しましたが,原因が分かりません.
分かる方いましたらお願いします.
windows7
corei5
などの環境でスタックを用いたプログラミングをしているのですが,バグが解決できず困っています.
以下に実際のプログラムを模したプログラムを載せました.
class Pos{
private:
int x, y;
public:
Pos(int x, int y){
this->x = x;
this->y = y;
}
Pos(){}
};
void test(){
/* メモリ確保 */
int seeds = 2;
int* seedx = (int*)malloc(sizeof(int)*seeds);
int* seedy = (int*)malloc(sizeof(int)*seeds);
std::stack<Pos> *st = (std::stack<Pos>*)malloc(sizeof(std::stack<Pos>) * seeds);
/* 初期化 */
seedx[0] = 0;
seedy[0] = 0;
seedx[1] = 232;
seedy[1] = 146;
Pos p0(seedx[0],seedy[0]);
Pos p1(seedx[1],seedy[1]);
st[0].push(p0);
st[1].push(p1);
//又は
//st[0].push(Pos(seedx[0],seedy[0]));
//st[1].push(Pos(seedx[1],seedy[1]));
//どっちにしろtopするとエラーになります.
Pos p = st[0].top();//ここでプログラムが強制終了
}
実行時に
~.exeは動作を終了しました.と表示されてしまいます.
puts("")文などで古典的なデバックをしたところ,top()の前で処理が止まっていることが判明しましたが,原因が分かりません.
分かる方いましたらお願いします.