I'm trying to create 3 arrays of type int using malloc, then initialize all 3 arrays to the same value (10) in a for look, like this:
#include <stdio.h>
#include <stdlib.h>
int main() {
int* arr1;
int* arr2;
int* arr3;
arr1 =(int*) malloc(5* sizeof(int));
arr2 = (int*) malloc(5* sizeof(int));
arr3 =(int*) malloc(5* sizeof(int));
for(int j = 0; j< 5 ; j++){
*arr1 = 10;
*arr2 = 10;
*arr3 = 10;
arr1 += sizeof(int);
arr2 += sizeof(int);
arr3 += sizeof(int);
}
After this I reset all 3 pointers to their original position like this:
arr1 -= (sizeof(int) * 5);
arr2 -= (sizeof(int) * 5);
arr3 -= (sizeof(int) * 5);
Then I want to print all the values stored, I try to do it like this:
for(int k = 0; k < 5; k++){
arr1 += sizeof(int);
arr2 += sizeof(int);
arr3 += sizeof(int);
printf("arr1 %d\n",*arr1);
printf("arr2 %d\n",*arr2);
printf("arr3 %d\n",*arr3);
}
}
I expect all the values printed to be 10 but I'm getting some random values in unexpected places like this:
arr1 10
arr2 10
arr3 10
arr1 10
arr2 10
arr3 846361185
arr1 10
arr2 10
arr3 10
arr1 10
arr2 829583969
arr3 10
arr1 10
arr2 10
arr3 0
I have absolutely no clue what is wrong, I've been stuck trying to solve this for hours without any result.
Can someone explain what's happening?.