When forking, the exact environment of the parent process gets copied. Is that space allocated in a random space in RAM or the parent and child processes are getting continuous RAM space (like array elements for example)?
If you download and extract it (linux-3.13) from kernel.org, you can see that in linux-3.13/kernel/fork.c there is a well documented bunch of functions. One, 'do_fork(...)' claims to do the actual fork. Here this function calls 'static struct task_struct *copy_process(...)', around line 1129. What you are looking for must be somewhere near.
OK here as I see, that function after checking selinux permissions calls 'dup_task_struct(...)', which calls 'alloc_task_struct_node(...)', 'alloc_thread_info_node(...)' and 'arch_dup_task_struct(...)'. Given the fact 'alloc_task_struct_node(...)' does "little thing more than calling kmem_cache_alloc_node(...)" and the fact that that function is declared in the file linux-3.13/mm/slab.c, which hints about memory management, and the fact that many kernel threads may be working against memory management responsibilities (creating and deleting structures continuously), I would bet Linux in particular does not by normal thing create process data structures one next to another, because of many threads doing the same generic allocations that fork uses.