memset(pointer,defaultvalue,numobjects*sizeof(obje ct))

unsigned char *Screen=new unsigned char[64000];
memset(Screen,0,64000);

unsigned int *Screen=new unsigned int[64000];
memset(Screen,0,(64000<<1)); //or 64000*sizeof(int)

Top example unsigned char is 1 byte. Bottom example - in 16 bit real mode programming an integer is 2 bytes so you must multiply 64000 by 2, or shift left by 1, to get the correct size of the memory. 64000 integers requires 128000 bytes since each integer is 2 bytes or 16 bits.

Only use a for loop when you are initializing an array with different default values since this cannot be done using memset or other fast memory functions or w/o using assembly.