In reply to kuki2002:
That is correct. Actually for this example, it would have made no difference if the automatic variable declaration was moved out of the fork block. Each iteration of the for-loop creates a new scope activation and another instance of the automatic variable k.
module fork_test1;
initial
for (int j=0; j<3; j++)
begin
automatic int k = j;
$display($time, "#####");
#1;
fork
$display(j,,k);
join_none
end
endmodule:fork_test1