Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdbool.h>
- #include <stdint.h>
- uint32_t** arrD = NULL;
- uint32_t numE = 0;
- void cleanup()
- {
- if(numE)
- {
- for( uint32_t i = 0; i < numE; ++i)
- {
- free(arrD[i]);
- printf("INFO: free arrD[%d]\n",i);
- }
- }
- if(arrD) free(arrD);;
- }
- bool init()
- {
- uint32_t** arrTmp;
- arrD = realloc(arrD, sizeof(uint32_t*)*(numE+1));
- if(!arrD) return false;
- arrD[numE] = malloc(sizeof(uint32_t)*10);
- if(!arrD[numE]) return false;
- numE++;
- arrTmp = realloc(arrD, sizeof(uint32_t*)*(numE+1));
- if(!arrTmp) return false;
- arrD = arrTmp;
- arrD[numE] = malloc(sizeof(uint32_t)*20);
- if(!arrD[numE]) return false;
- numE++;
- arrTmp = realloc(arrD, sizeof(uint32_t*)*(numE+1));
- if(!arrTmp) return false;
- arrD = arrTmp;
- arrD[numE] = malloc(sizeof(uint32_t)*30);
- if(!arrD[numE]) return false;
- numE++;
- return true;
- }
- int main (int argc, char **argv){
- uint32_t pArr1[]={0,1,2};
- uint32_t pArr2[]={3,4,5,6};
- uint32_t pArr3[]={7,8,9,10,11};
- printf("sizeof pArr1: %zu\n", sizeof(pArr1));
- printf("sizeof pArr1[0]: %zu\n", sizeof(pArr1[0]));
- printf("sizeof *pArr1: %zu\n", sizeof(*pArr1));
- printf("sizeof &pArr1: %zu\n", sizeof(&pArr1));
- printf("num 1: %zu\n", sizeof(pArr1)/sizeof(pArr1[0]));
- printf("num 2: %zu\n", sizeof(pArr2)/sizeof(pArr2[0]));
- printf("num 3: %zu\n", sizeof(pArr3)/sizeof(pArr3[0]));
- if(!init())
- {
- cleanup();
- return 1;
- }
- printf("INFO: Ready!\n");
- printf("%zubit machine\n",sizeof(void*)*8);
- printf("sizeof arrD: %zu\n", sizeof(arrD));
- printf("sizeof *arrD: %zu\n", sizeof(*arrD));
- printf("sizeof arrD[0]: %zu\n", sizeof(arrD[0]));
- printf("sizeof *arrD[0]: %zu\n", sizeof(*arrD[0]));
- printf("sizeof arrD[0][0]: %zu\n", sizeof(arrD[0][0]));
- for(uint32_t i = 0; i<10; ++i)
- {
- arrD[0][i] = i;
- }
- for(uint32_t i = 0; i<20; ++i)
- {
- arrD[1][i] = i;
- }
- for(uint32_t i = 0; i<30; ++i)
- {
- arrD[2][i] = i;
- }
- for(uint32_t i = 0; i<10; ++i) printf("%d ",arrD[0][i]);
- printf("\n");
- for(uint32_t i = 0; i<20; ++i) printf("%d ",arrD[1][i]);
- printf("\n");
- for(uint32_t i = 0; i<30; ++i) printf("%d ",arrD[2][i]);
- printf("\n");
- cleanup();
- return 0;
- }
- /*
- sizeof pArr1: 12
- sizeof pArr1[0]: 4
- sizeof *pArr1: 4
- sizeof &pArr1: 8
- num 1: 3
- num 2: 4
- num 3: 5
- INFO: Ready!
- 64bit machine
- sizeof arrD: 8
- sizeof *arrD: 8
- sizeof arrD[0]: 8
- sizeof *arrD[0]: 4
- sizeof arrD[0][0]: 4
- 0 1 2 3 4 5 6 7 8 9
- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
- 0 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
- INFO: free arrD[0]
- INFO: free arrD[1]
- INFO: free arrD[2]
- */
Add Comment
Please, Sign In to add comment