回答編集履歴
1
c++的な例
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
|
```
|