KnowBug的博客通过本文主要向大家介绍了c语言,内存地址等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
#include<stdio.h> #include<stdlib.h> //内存是由按顺序编号的一系列存储单元组成的,在内存中每个存储单元都有唯一的地址, //通过地址可以方便地在内存单元中存取信息。 //内存中的数据要靠供电来维持,当计算机关机或者断电时,其中的所有数据就永久消失了。 //一个程序载入内存,代码数据都有地址 //外挂就是调用函数,修改数据 //函数就是代码,变量就是数据 //内存与CPU读写速度快,断电就没有了,容量比较小,成本比较高 //高级服务器、读写很频繁的文件全部放入内存 //内存地址 //为了正确地访问每个内存单元,对其进行编址,以32位计算机为例,其地址空间为32位,采用32位地址编码,诸如0x12345678的形式。 //内存地址是连续的,相邻内存单元间的地址差1,可以把内存单元看做一个平坦连续的一维空间。 //32位计算机,内存最大为4G //4G = 4 * 1024 M = 4 * 1024 * 1024 KB = 4 * 1024 * 1024 * 1024 Byte = 4 * 1024 * 1024 * 1024 // = 2^2 * 2^10 * 2^10 * 2^10 // = 2^32 Byte //一个字节即地址加1,内存中每一个字节都有一个编号,即地址 //地址空间为32位 //内存中保存的是数据,在计算机中,一切信息都是以二进制数据的形式体现的,每个内存单元的容量是1B,即1bit(8个0/1二进制位) //中央处理器,即CPU,进行的处理离不开内存。 //使用windows系统时,双击某个可执行程序,CPU会执行它,这实际是复杂的内存载入过程: //(1)程序要进行的操作对应的代码被装载到代码区 //(2)全局和静态数据等装载到数据区 //(3)开辟堆栈,供临时变量使用 //内存中的数据是多种多样的,可以是操作,也可以是数据,都被存储在一个个的内存小格子中,每个小格子存储8个二进制位 void main() { printf("%x\n", main1); //函数名就是函数的首地址 int num; printf("%x\n", &num); num = 4; printf("%d\n", num); //设置断点 //根据地址在内存中修改变量的值 printf("%d\n", num); system("pause"); }