If your image dimensions are 32x32 at the beginning, 3 MaxPoolLayers with your setup will reduce it to 4x4.
So yes, your fc1 layer should probably take 4x4x256 inputs.
The easiest way to get the right size, is to add a print statement in your forward pass and just look at the size. 
At least that’s how I do it, if I don’t want to calculate it.
[...]
x = F.relu(...
print x.size()