temp[i].value=(int *)malloc(sizeof(int)*256)

void * から任意のポインタへの変換ってダメだっけ?
++ じゃダメなんだっけか?