Hallo HaWe,

wie Du getippt hast:
Code:
size_t len = 8;

int16_t *ptr = (int16_t*)malloc(arrlen * sizeof(int16_t));

/* Oder wenn's mit 0 initialisiert sein soll: *)
ptr = (int16_t*)calloc(arrlen, sizeof(int16_t));
ist die richtige Antwort.

Allerdings ist es dann üblich mittels Pointer Arithemetik und nicht mit dem Array-Operator auf das Feld zuzugreifen also drittes Element im Feld;
Code:
*(ptr + 2) = 32 * 27 + *(ptr + 1);
ist aber Geschmackssache.