In a multithreaded process, threads share certain components of the program state, such as heap memory and file descriptors. However, each thread has its own stack memory and registers to maintain its execution context. Auto variables are typically stored on the stack and are thread-specific.