回答編集履歴
3
微修正
test
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
malloc(N) で確保したNバイト領域は連続していることが保証されます(なので malloc(N*sizeof(int)) で得られた領域は int[N] として使える)が、
|
6
6
|
|
7
|
-
malloc(M), malloc(N) を立て続けにやって M+Nバイトが連続する保証はどこにもありません。
|
7
|
+
**malloc(M), malloc(N) を立て続けにやって M+Nバイトが連続する保証はどこにもありません。**
|
8
8
|
|
9
9
|
[追記] やりたいことはコレ↓か?
|
10
10
|
```C
|
2
追記
test
CHANGED
@@ -6,3 +6,20 @@
|
|
6
6
|
|
7
7
|
malloc(M), malloc(N) を立て続けにやって M+Nバイトが連続する保証はどこにもありません。
|
8
8
|
|
9
|
+
[追記] やりたいことはコレ↓か?
|
10
|
+
```C
|
11
|
+
#include <stdio.h>
|
12
|
+
#include <stdlib.h>
|
13
|
+
|
14
|
+
int main() {
|
15
|
+
int** arry = malloc(3*sizeof(int*)); // int* を 3つ、連続して確保
|
16
|
+
for (int i=0; i<3; i++){
|
17
|
+
arry[i] = (int*)malloc(sizeof(int));
|
18
|
+
*arry[i] = i;
|
19
|
+
printf("*arr[%d] = %d at %p\n", i, *arry[i], arry+i);
|
20
|
+
}
|
21
|
+
return 0;
|
22
|
+
}
|
23
|
+
```
|
24
|
+
|
25
|
+
|
1
微修正
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
でもそうはならない。
|
4
4
|
|
5
|
-
malloc(N) で確保したNバイト領域は連続していることが保証されますが、
|
5
|
+
malloc(N) で確保したNバイト領域は連続していることが保証されます(なので malloc(N*sizeof(int)) で得られた領域は int[N] として使える)が、
|
6
6
|
|
7
7
|
malloc(M), malloc(N) を立て続けにやって M+Nバイトが連続する保証はどこにもありません。
|
8
8
|
|