Which of the following is a valid way to allocate memory dynamically in C Language?
A) int *ptr = malloc(10);
B) int *ptr = new int[10];
C) int *ptr = calloc(10, sizeof(int));
D) All of the above