I am trying to implement a dynamic array to my C stack, however I am a bit confused how char malloc works in such that it inserts garbage data as soon as it is created.
Here is the code used to initialize the array and push elements in.
typedef struct {
char *array;
int used;
int size;
} Array;
void initArray(Array *a, int initialSize) {
a->array = (char *)malloc(initialSize * sizeof(char)+1);
a->used = 0;
a->size = initialSize;
}
void pushArray(Array *a, int element) {
if (a->used == a->size) {
a->size +=1;
a->array = (char *)realloc(a->array, a->size * sizeof(char));
}
a->array[a->used++] = element;
}
And here is the main snippet where I initialize and push elements into array
int main()
{
Array a;
int i=0;
initArray(&a,0);
char choice='a';
char exp[100]="";
printf("Please enter an expression\n");
scanf("%s",exp);
for (i=0;i<strlen(exp);i++){
pushArray(&a,exp[i]);
}