C - malloc alocando muita memória

executando int um cenário estranho em que o malloc está alocando mais memória do que eu solicito:

void function (int array [], int numberOfElements) {

int *secondArray = malloc(sizeof(int) * numberOfElements/2);

for (int i = 0; i < numberOfElements / 2; i++) {
    secondArray[i] = array[i];
  }
} 

Digamos que o array tenha uns 10 números. Quando imprimo o secondArray após o código acima, recebo:

primeiro, a matriz deve ter 5 elementos. Mas segundo, por que os 0 no final? Estou alocando apenas espaço para 10/2 = 5 ints.

EDITAR:

código de impressão:

for (int d = 0; d < numberOfElements; d++) {
   printf("%i ", secondArray[d]);
}

hmm, talvez eu tenha respondido minha própria pergunta aqui, acho que é a impressão além do secondArray que mostra 0, não a matriz em si.

-

Na verdade, o problema é que eu também não estava fazendo isso:

secondArray[numberOfElements] = '\0';

É por isso que estava imprimindo além.

questionAnswers(3)

yourAnswerToTheQuestion