Step by step

My diary

...

Search

breakinformation. Powered by Blogger.

2018년 9월 24일 월요일

multi memory allocation (simplify)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <stdio.h>
#include <stdlib.h>
 
int main(void) {
    
    int ***threeDimensional = calloc (3sizeof (int**)); // dynamic allocation, height
    unsigned int horizon = 0, vertical = 0, height = 0;
    
    for (vertical = 0; vertical < 4; vertical++) {
        
        threeDimensional[vertical] = calloc (4sizeof (int*)); // dynamic allocation, vertical
        for (horizon = 0; horizon < 5; horizon++) {
            
            threeDimensional[vertical][horizon] = calloc (5sizeof (int)); // dynamic allocation, horizon
        }
    }
    
    for (height = 0; height < 3; height++) {
        for (vertical = 0; vertical < 4; vertical++) {
            for (horizon = 0; horizon < 5; horizon++) {
                
                threeDimensional[height][vertical][horizon] = horizon + vertical + height;
                printf("%d ", threeDimensional[height][vertical][horizon]);
            }
            printf("\n");
        }
        printf("\n");
    }
    
    printf("%d\n"sizeof (threeDimensional));
    printf("%d\n"sizeof (*threeDimensional));
    printf("%d\n"sizeof (**threeDimensional));
    
    //=====================================================
    
    for (vertical = 0; vertical < 4; vertical++) {
        for (horizon = 0; horizon < 5; horizon++) {
            
            free (threeDimensional[vertical][horizon]); // clear dynamic allocation, horizon
        }
        free (threeDimensional[vertical]); // clear dynamic allocation, vertical
    }
    free (threeDimensional); // clear dynamic allocation, height
    
    return 0;
}
cs

multi memory allocation


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <stdio.h>
#include <stdlib.h>
 
int main(void) {
    
    int ***threeDimensional = calloc (3sizeof (int**)); // dynamic allocation, height
    unsigned int horizon = 0, vertical = 0, height = 0;
    
    for (vertical = 0; vertical < 4; vertical++) {
        
        threeDimensional[vertical] = calloc (4sizeof (int*)); // dynamic allocation, vertical
    }
    
    for (vertical = 0; vertical < 4; vertical++) {
        for (horizon = 0; horizon < 5; horizon++) {
            
            threeDimensional[vertical][horizon] = calloc (5sizeof (int)); // dynamic allocation, horizon
        }
    }
    
    for (height = 0; height < 3; height++) {
        for (vertical = 0; vertical < 4; vertical++) {
            for (horizon = 0; horizon < 5; horizon++) {
                
                threeDimensional[height][vertical][horizon] = horizon + vertical + height;
                printf("%d ", threeDimensional[height][vertical][horizon]);
            }
            printf("\n");
        }
        printf("\n");
    }
    
    printf("%d\n"sizeof (threeDimensional));
    printf("%d\n"sizeof (*threeDimensional));
    printf("%d\n"sizeof (**threeDimensional));
    
    //=====================================================
    
    for (vertical = 0; vertical < 4; vertical++) {
        for (horizon = 0; horizon < 5; horizon++) {
            
            free (threeDimensional[vertical][horizon]); // clear dynamic allocation, horizon
        }
    }
    for (vertical = 0; vertical < 4; vertical++) {
        
        free (threeDimensional[vertical]); // clear dynamic allocation, vertical
    }
    free (threeDimensional); // clear dynamic allocation, height
    
    return 0;
}
cs

double pointer


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>
#include <stdlib.h>
 
int main(void) {
    
    int** doublePointer = calloc (3sizeof (int *)); // dynamic allocation, vertical
    unsigned int loop = 0;
    
    for (loop = 0; loop < 3; loop++) {
        
        doublePointer[loop] = calloc (4sizeof (int)); //dynamic allocation, horizon
    }
    
    doublePointer[0][0= 10;
    doublePointer[2][0= 20;
    doublePointer[2][3= 30;
    
    printf("%d\n", doublePointer[0][0]);
    printf("%d\n", doublePointer[2][0]);
    printf("%d\n", doublePointer[2][3]);
    
    for (loop = 0; loop < 3; loop++) {
        
        free(doublePointer[loop]); // clear dynamic allocation, horizon
    }
    
    free (doublePointer); // clear dynamic allocation, vertical
    
    return 0;
}
cs

malloc, calloc


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <stdio.h>
#include <stdlib.h>
 
int main(void) {
    
    int *pointerNumber = malloc (sizeof (int* 10);
    
    pointerNumber[0= 10;
    pointerNumber[9= 20;
    
    printf(" == malloc ==\n");
    printf("%d\n", pointerNumber[0]);
    printf("%d\n", pointerNumber[5]);
    printf("%d\n", pointerNumber[9]);
        
    free(pointerNumber);
    
    int *pointerNumber2 = calloc (10sizeof(int));
    
    pointerNumber2[0= 10;
    pointerNumber2[9= 20;
    
    printf("\n == calloc ==");
    printf("\n%d\n", pointerNumber2[0]);
    printf("%d\n", pointerNumber2[5]);
    printf("%d\n", pointerNumber2[9]);
        
    free(pointerNumber2);
        
    return 0;
}
cs

2018년 9월 23일 일요일

test array


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <stdio.h>
 
int main(void) {
    
    int arrayNumber[3][4][5= { 0, }; // arrayNumber[height][vertical][horizon]
    int row = 0, column = 0, depth = 0;
    unsigned int horizon = 0, vertical = 0, height = 0;
    
    depth = sizeof (arrayNumber) / sizeof (arrayNumber[0]); // height  240(60) / 80(20) = 3
    column = sizeof (arrayNumber[0]) / sizeof (arrayNumber[0][0]); // vertical  80(20) / 20(5) = 4
    row = sizeof (arrayNumber[0][0]) / sizeof (int); // horizon  20byte / 4byte = 5
    
    for (height = 0; height < depth; height++) {
        for (vertical = 0; vertical < column; vertical++) {
            for (horizon = 0; horizon < row; horizon++) {
                
                arrayNumber[height][vertical][horizon] = horizon + vertical + height;
                printf("%d ", arrayNumber[height][vertical][horizon]);
            }
            printf("\n");
        }
        printf("\n");
    }
    
    printf("height : %d\n", depth);
    printf("vertical : %d\n", column);
    printf("horizon : %d\n", row);
    
    printf("%p\n", arrayNumber);
    printf("%p\n", arrayNumber[0]);
    printf("%p\n\n", arrayNumber[0][0]);
    
    printf("%d\n"sizeof (arrayNumber));
    printf("%d\n"sizeof (arrayNumber[0]));
    printf("%d\n"sizeof (arrayNumber[0][0]));
    
    return 0;
}
cs

array size


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
 
int main(void) {
    
    int arrayNumber[3][4= { 0, }; // arrayNumber[vertical][horizon]
    int column = 0, row = 0
    unsigned int horizon = 0, vertical = 0;
    
    row = sizeof (arrayNumber[0]) / sizeof (int); // horizon
    column = sizeof (arrayNumber) / sizeof (arrayNumber[0]); // vertical        
    
    for (vertical = 0; vertical < column; vertical++) {
        for (horizon = 0; horizon < row; horizon++) {
            
            arrayNumber[vertical][horizon] = 10;
            printf("%d ", arrayNumber[vertical][horizon]);
        }
        printf("\n");
    }
    
    printf("row : %d\ncolumn : %d\n", row, column);    
    
    return 0;
}
cs

array


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
int main(void) {
    
    int arrayNumber[15= { 112233445566778899110121132143154165 };
    int sum = 0, loop = 0;
    
    for (loop = (sizeof (arrayNumber) / sizeof (int)) - 1; loop >= 0; loop--) {
        
        sum += arrayNumber[loop];
    }
    
    printf("%d\n", sum);
    
    return 0;
}
cs