Some concepts about memory copy are not quite clear for me, my questions could be quite simple and stupid:

if there is float number array containing 100 float numbers in the device memory, and I have 256 threads (only 1 block in total). If i use threadIdx.x as the index of the array, it will crash, am i right?

if there is float number array containing 100 float numbers in the device memory, and I have 32 threads (only 1 block in total). If i use threadIdx.x as the index of the array, so basiclly each thread needs to deal with several numbers, so i use data[threadidx.x * n] where n = 1, 2, 3, 4, is this correct? Then sometimes the index will exceed 100, what will happen then(this question is almost the some as the first one)?
Thank you for help!