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

回答編集履歴

3

修正

2021/02/18 03:23

投稿

episteme
episteme

スコア16612

answer CHANGED
@@ -1,8 +1,8 @@
1
1
  コピー先である str が NULL だから。
2
2
 
3
3
  ```C++
4
- #include <cstdio>
5
- #include <cstdlib>
4
+ #include <iostream>
5
+ #include <algorithm>
6
6
  #include <cstring>
7
7
 
8
8
  char* str = nullptr;
@@ -10,10 +10,10 @@
10
10
  int main() {
11
11
  const char* str2 = "aaa";
12
12
 
13
- str = (char*)malloc(strlen(str2)+1);
13
+ str = new char[std::strlen(str2)+1];
14
- memcpy(str, str2, strlen(str2)+1);
14
+ std::copy_n(str2, std::strlen(str2)+1, str);
15
- printf("%s",str);
15
+ std::cout << str;
16
16
 
17
- free(str);
17
+ delete[] str;
18
18
  }
19
19
  ```

2

微修正

2021/02/18 03:23

投稿

episteme
episteme

スコア16612

answer CHANGED
@@ -5,7 +5,7 @@
5
5
  #include <cstdlib>
6
6
  #include <cstring>
7
7
 
8
- char* str = NULL;
8
+ char* str = nullptr;
9
9
 
10
10
  int main() {
11
11
  const char* str2 = "aaa";

1

追記

2021/02/18 03:19

投稿

episteme
episteme

スコア16612

answer CHANGED
@@ -1,1 +1,19 @@
1
- コピー先である str が NULL だから。
1
+ コピー先である str が NULL だから。
2
+
3
+ ```C++
4
+ #include <cstdio>
5
+ #include <cstdlib>
6
+ #include <cstring>
7
+
8
+ char* str = NULL;
9
+
10
+ int main() {
11
+ const char* str2 = "aaa";
12
+
13
+ str = (char*)malloc(strlen(str2)+1);
14
+ memcpy(str, str2, strlen(str2)+1);
15
+ printf("%s",str);
16
+
17
+ free(str);
18
+ }
19
+ ```