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.