回答編集履歴

3

微修正

2022/03/31 05:14

投稿

episteme
episteme

スコア16614

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

追記

2022/03/31 05:13

投稿

episteme
episteme

スコア16614

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

微修正

2022/03/31 05:01

投稿

episteme
episteme

スコア16614

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