質問するログイン新規登録

回答編集履歴

3

0

2019/12/02 05:05

投稿

takabosoft
takabosoft

スコア8356

answer CHANGED
@@ -14,4 +14,4 @@
14
14
 
15
15
  という感じです。
16
16
 
17
- 解決策はおまかせします( =0の処理をやめるのも手)。
17
+ 解決策はおまかせします(~~ =0の処理をやめるのも手~~)。

2

2

2019/12/02 05:05

投稿

takabosoft
takabosoft

スコア8356

answer CHANGED
@@ -10,5 +10,8 @@
10
10
  0. コンテナ側へ↑の内容が丸ごとコピーされる
11
11
  0. 1が破棄される(arrayもdelete[]される)
12
12
  0. コンテナ側は複製を持っているので3でdelete済みのarrayを保持し続けている
13
+ 0. コンテナ側で持っているarrayは存在しないポインタなので、deleteやその他のアクセスはすべて正常に動作しない
13
14
 
15
+ という感じです。
16
+
14
17
  解決策はおまかせします( =0の処理をやめるのも手)。

1

0

2019/11/29 08:41

投稿

takabosoft
takabosoft

スコア8356

answer CHANGED
@@ -1,11 +1,14 @@
1
1
  デバッグで追ってみた感じ、コンストラクタ内の
2
2
 
3
3
  > for(int i = 0;i < insize;++i)
4
- > array[i]=0;
4
+ > array[i]=0;
5
5
 
6
6
  上記のコードで
7
- 一時的に ttkkggww::vector<int>(0) を生成して代入しているようです。
7
+ 一時的に`ttkkggww::vector<int>(0)`を生成して代入しているようです。
8
8
 
9
- ttkkggww::vector<int>(0)は一時的に内部でarrayを生成しまが、コンテナ側はそのコピーを持っており、一時的に作ったvector側がdelete[] arrayをしてしまい、コンテナ側が持っていポインタ値が無効になります。
9
+ 0. 一時的に`ttkkggww::vector<int>(0)`が生成され内部でarrayをnewする
10
+ 0. コンテナ側へ↑の内容が丸ごとコピーされる
11
+ 0. 1が破棄される(arrayもdelete[]される)
12
+ 0. コンテナ側は複製を持っているので3でdelete済みのarrayを保持し続けている
10
13
 
11
- 解決策はおまかせします。
14
+ 解決策はおまかせします( =0の処理をやめるのも手)