在C语言中有一个指针这么一个烦人的东西,经常会涉及到内存地址等概念。
int a=4;
//这段代码保存之后就存在硬盘上,之后对这个代码操作要从硬盘上读取到内存,最后CPU才计算,再将计算结果返回给内存。
4既有一个虚拟地址,还有一个物理地址(这样说对?还是4就对应一个地址就是存在于物理地址中,之后a对应虚拟地址),这两个地址都是指在什么上边的地址?(虚拟地址就是在程序里面使用的地址,物理地址就是内存条里的地址。首先变量名a在编译之后就会变成虚拟地址(就不存在了),知道a的虚拟地址,再根据映射关系,去内存上找物理地址,才能取到4来使用?)
编写一个程序时会有变量名函数名数据等内容,但是该程序在被编译后就只存在数据、地址和指令这些东西,变量名函数名就会转化为地址形式来存在。虚拟地址就是在程序里面使用的地址,物理地址就是内存条里的地址。编写不同的程序就会产生相应的不同的虚拟地址(比如一个程序int a=4;和另外一个程序int a=5;根据数据类型的话,这两个程序可以使用同一个虚拟地址,操作系统会定义不同的映射关系,分别找到4和5在内存上的物理地址,进而取数据操作。),