Certainly! Here is an example program that demonstrates how to use the malloc() and calloc() functions in C:

#include <stdio.h>
#include <stdlib.h>

int main(void) {
// Allocate memory using malloc()
int *ptr = malloc(5 * sizeof *ptr);
if (ptr == NULL) {
perror("malloc");
return 1;
}

// Initialize the allocated memory
for (int i = 0; i < 5; i++) {
ptr[i] = i + 1;
}

// Print the values of the allocated memory
for (int i = 0; i < 5; i++) {
printf("ptr[%d] = %d\n", i, ptr[i]);
}

// Deallocate the memory using free()
free(ptr);

// Allocate memory using calloc()
ptr = calloc(5, sizeof *ptr);
if (ptr == NULL) {
perror("calloc");
return 1;
}

// Print the values of the allocated memory
for (int i = 0; i < 5; i++) {
printf("ptr[%d] = %d\n", i, ptr[i]);
}

// Deallocate the memory using free()
free(ptr);

return 0;
}

This program demonstrates how to use the malloc() function to dynamically allocate memory for an array of integers, and how to use the calloc() function to dynamically allocate and initialize an array of integers to zero.

The malloc() function is used to allocate a block of memory of a specified size. It takes a single argument, which is the size of the block of memory to be allocated in bytes. It returns a pointer to the allocated memory, or NULL if the allocation fails.

The calloc() function is similar to malloc(), but it initializes the allocated memory to zero. It takes two arguments: the number of elements to allocate and the size of each element in bytes. It returns a pointer to the allocated memory, or NULL if the allocation fails.

In this program, the malloc() function is used to allocate memory for an array of 5 integers. The calloc() function is used to allocate memory for another array of 5 integers. The values of the arrays are then printed, and the memory is deallocated using the free() function.