In C, we all learned that:

```
int i[500]; // Array of 500 integers on stack
int *i = malloc(sizeof(int) * 500); // Array of 500 integers on heap

```

Stack size grows and shrinks as functions push and pop variables from it. But why cannot a dynamically size array be pushed and popped from stack?