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

回答編集履歴

1

c++的な例

2021/02/18 03:24

投稿

int32_t
int32_t

スコア21933

answer CHANGED
@@ -1,12 +1,24 @@
1
1
  `str` が NULL だからです。コピー先には十分な大きさの領域が必要です。あと、文字列をコピーするときは終端 \0 もコピーしないといけません。
2
2
 
3
- 例:
3
+ 1:
4
4
  ```c
5
- str = malloc(strlen(str2) + 1);
5
+ str = (char*)malloc(strlen(str2) + 1);
6
- memcpy(str, str2, strlen(str2) + 1);
6
+ memcpy(str, str2, strlen(str2) + 1); // または strcpy(str, str2);
7
+ ...
8
+ free(str);
7
9
  ```
8
10
 
9
11
  例2:
10
12
  ```c
11
13
  str = strdup(str2);
14
+ ...
15
+ free(str);
16
+ ```
17
+
18
+ 例3:
19
+ ```c++
20
+ str = new char[strlen(str2) + 1];
21
+ strcpy(str, str2); // または memcpy()
22
+ ...
23
+ delete[] str;
12
24
  ```