Static and Dynamic Memory Allocation in C