Dynamic allocation of memory means "Memory allocated during the run time based on need". There are multiple APIs supported in C library. Using those APIs (malloc and calloc) memory can be allocated during the execution of process. Best use case is linked list data structure. Dealing with linked list you don't know how many nodes it would have in advance that's why memory for nodes are allocated whenever it needs.
Hope my explanation on dynamic memory would help somewhat.