回答編集履歴

3

0

2019/12/02 05:05

投稿

takabosoft
takabosoft

スコア8356

test CHANGED
@@ -30,4 +30,4 @@
30
30
 
31
31
 
32
32
 
33
- 解決策はおまかせします( =0の処理をやめるのも手)。
33
+ 解決策はおまかせします(~~ =0の処理をやめるのも手~~)。

2

2

2019/12/02 05:05

投稿

takabosoft
takabosoft

スコア8356

test CHANGED
@@ -22,6 +22,12 @@
22
22
 
23
23
  0. コンテナ側は複製を持っているので3でdelete済みのarrayを保持し続けている
24
24
 
25
+ 0. コンテナ側で持っているarrayは存在しないポインタなので、deleteやその他のアクセスはすべて正常に動作しない
26
+
27
+
28
+
29
+ という感じです。
30
+
25
31
 
26
32
 
27
33
  解決策はおまかせします( =0の処理をやめるのも手)。

1

0

2019/11/29 08:41

投稿

takabosoft
takabosoft

スコア8356

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