编译器编译后成为obj,经过连接器连接后生成机器码。
静态的分配的内存,是在编译连接过程中分配的;动态内存,是在运行时分配的。
对于应用来讲,每个进程都拥有独立的4G内存空间,也就是说进程A中占用的内存是0x001,进程B中占用的内存0x001,指的都是虚拟内存,他们指向的不是同一个物理内存。
我们现在所有操作的内存,指的都是虚拟内存,内存条正在的实际地址0x001,我们是不能直接访问的。
内存条中的物理地址是唯一的。
2个进程同时访问内存0x001的话,编译器,只分配了虚拟内存地址,但是到真正实际运行的时候,又操作系统实时分配物理内存,该物理内存是随即的(不被其他应用使用的物理内存)。
只有真正实际运行的时候,才由操作系统分配内存,一般情况下,也只有操作系统能够分配物理内存,而编译器,只是分配虚拟内存。