【C++】vectorについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
スイッチ

【C++】vectorについて

#1

投稿記事 by スイッチ » 5年前

はじめまして、スイッチと申します。
C++の経験があまりなく、下記の現象で困っております。

ある関数で
構造体Aの変数aを
vector<A> bにpush_backすると
"Microsoft Visual C++ Debug Library"ウィンドウが表示されて、実行できません。
ウィンドウに表示されたエラーコードは下記となります。
"Debug Error R6010 -abort() has been called"
bはクラスのメンバ変数です。

デバック実行をして、push_backの中を追っていくと
c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xmemory
のconstruct関数で上記のエラーがでます。
構造体Aのサイズは200バイトで、ピープ領域は十分確保できていると考えています。

実行環境
WINDOWS 7
visualstudio2010

どんな事でもいいので、
解決のヒントになりそうな事を教えて頂ければ幸いです。

アバター
tk-xleader
記事: 153
登録日時: 9年前
連絡を取る:

Re: 【C++】vectorについて

#2

投稿記事 by tk-xleader » 5年前

 実際にコードを見てみないと的を射た回答をすることは難しいですが、可能性の1つとして考えられるのは、何らかの理由でbの領域が破壊的に書き換えられているということですかね…

〔追記:2015/7/20 0:29〕
 できれば、構造体Aの定義とか、bを含むクラスのコードやabortするオブジェクトのスコープを含んだコードなど、関連しそうなコード片を示していただければ回答も得やすいのではないかと…

スイッチ

Re: 【C++】vectorについて

#3

投稿記事 by スイッチ » 5年前

ご回答ありがとうございます。

構造体Aは下記となります。
Vector3d、Matrix3d がeigenの行列クラス。
Sophus::SE3がSophusのクラスです。

コード:

 
struct A
{
Vector3d t;
Matrix3d R;
double d;
Vector3d n;
Sophus::SE3 T;
int score;
};

Rittai_3D
記事: 525
登録日時: 7年前

Re: 【C++】vectorについて

#4

投稿記事 by Rittai_3D » 5年前

tk-xleader さんが書きました:できれば、構造体Aの定義とか、bを含むクラスのコードやabortするオブジェクトのスコープを含んだコードなど、関連しそうなコード片を示していただければ回答も得やすいのではないかと…
tk-xleaderさんがこうおっしゃっている通り、構造体Aの定義以外のbを含むクラスのコードやabortするオブジェクトのスコープを含んだコードなどを提示してくださらないと具体的な回答が得られないと思います。
初心者です

アバター
tk-xleader
記事: 153
登録日時: 9年前
連絡を取る:

Re: 【C++】vectorについて

#5

投稿記事 by tk-xleader » 5年前

 1つ方法として考えられるのは、そのオブジェクトを使用しているコードを、

コード:

try{
    /*ここで囲む*/
}catch(std::exception& e){
    std::cerr << e.what()<<std::endl;
}
上記のコードで囲んで、何か例外が投げられていないかどうかを確認してみる方法はあります。

閉鎖

“C言語何でも質問掲示板” へ戻る