
現在作成中のプログラムは終了する時にアクセス違反が発生しましたと
表示されます。
以前はこの様なことはなかったのですが構造体に変数を追加した直後に起こるようになりました。
typedef struct _A{
int x,y;
int cost;
vector<int> To;
vector<int> E_cost;
}A_t;
typedef struct _B{
double x,y;
int sex;
char Name[20];
vector<int> root;
vector<A_t> Map; //このMapという変数を追加するとエラーがでる。
}B_t;
この変数を消すとエラーが出ることはありません。
まだこの変数は追加しただけで使っていません。終了時にのみ発生します。
A 回答 (8件)
- 最新から表示
- 回答順に表示
No.8
- 回答日時:
>追加した vector<A_t> Mapをコメントアウトするだけで
>正常に動作します。
とりあえず書いておきますが
B_t b1;
B_t b2;
b2 = b1;
上記コード見た目こそ、vector<A_t> B_t::Mapのコピーをしてないように見えますけど実際にはしてるというのはわかりますか?
またコピーコンストラクタが必要な場合は、operator=もふつうは必要です。
No.7
- 回答日時:
解決するかどうかまではわかりません。
コピーコンストラクタの件は明らかにおかしいから、直しておこう、というものです。
他の要因が無いと断言はできません。
std::vectorを使うときは、いろいろ気を付けなければならない事項があります。
(そうでなくても、C/C++でメモリ関連、となれば、気を付けることばかりです)
「std::vector 自作クラス」あたりで検索してみてください。
No.5
- 回答日時:
vector<A_t> が C++ のstd::vectorだとして。
あなたはコピーしている、という意識は無いかもしれませんが、 vectorの中でコピーが行われている可能性が高いです。
その結果
A_tにはコピーコンストラクタが無いので、標準のものが使われる
→A_t.To,A_t.E_const の「浅いコピー」が作られる
→ コピー元が解放される
→ コピー先は、内部のポインタが解放された領域を指したまま
→ コピー先も解放
→ 既に解放されている
といった現象が起っているのではないかと予想されます。
No.4
- 回答日時:
>本当に追加しただけでコピーも代入もしていません。
追加した
vector<A_t> Map
ではなくて追加された側のB_tや、それを使用しているかもしれない構造体やクラスの方です。
それとも構造体の定義だけしかしてない状態でエラーが起きるんですか。
この回答への補足
追加した vector<A_t> Mapをコメントアウトするだけで
正常に動作します。
ご指摘頂いた追加された側をチェックしてきます。
載せ忘れていたエラーで止まっている箇所を張っておきいます。
#if _ITERATOR_DEBUG_LEVEL == 2
if (_Myproxy != 0)
{// proxy allocated, drain it
_Lockit _Lock(_LOCK_DEBUG);
for (_Iterator_base12 **_Pnext = &_Myproxy->_Myfirstiter;
*_Pnext != 0; *_Pnext = (*_Pnext)->_Mynextiter)
(*_Pnext)->_Myproxy = 0; //この行で止まっている。
_Myproxy->_Myfirstiter = 0;
}
#endif /* _ITERATOR_DEBUG_LEVEL == 2 */
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Vba Replace関数について教えて...
-
CSSが全く分かりません、お助け...
-
DLLファイルの逆コンパイラにつ...
-
バッチファイルで以下のような...
-
CPUが16bitでも32bitOSでコンパ...
-
gccを行ってもexeファイルが生...
-
c言語
-
VisualStudio2022でC言語プログ...
-
Windows Formアプリからコンソ...
-
visual studio 2022でのC#プロ...
-
C言語の関数のextern宣言
-
プログラマー達は何故、プログ...
-
PIC12F1822でLED調光器を作りたい
-
最初に聞かれたこと
-
C言語 関数、変数の宣言について
-
C言語について(初心者)
-
プログラミングc++を全く分か...
-
あってる
-
DNCL(共テ用プログラミング言語...
-
DNCL(共テ用プログラミング言語...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access VBAから使用したExcelプ...
-
マウントしたディスクにcpで、...
-
一行おきに貼り付ける 可能でし...
-
C++言語で、構造体のコピーは可...
-
Activesheet.Pasteで困っています
-
Eclipseのコード入力時の、行コ...
-
Ctrl + Cなど複数の入力キー...
-
DataTableに入っているデータを...
-
Listviewに表示された文字のコ...
-
jakarta poiを使用し、EXCELの...
-
文字列の切り出し
-
Eclipseでコピーするとき行数な...
-
コピーした文章が改行がされて...
-
他プロジェクトのFormを自プロ...
-
Excelでコピーしたセル(テキス...
-
プログラムについて。
-
【UWSC】WEBページ内コピーした...
-
バッチで当日日付で作成される...
-
ASP.net でコントロールをコピー
-
arduino unoからデータを読み出...
おすすめ情報