首页 > 代码库 > 计算机的内存问题
计算机的内存问题
计算机的硬件主要为:控制器,寄存器,运算器,以及输入输出。
fseek: 表示定为指针
ftell: 表示返回当前的值
rewind: 表示返回到文件的头
计算机的总线就是cpu的外部总线。
计算机的存储器就是内存。
RAM在cpu内部,RAM在cpu内起到缓冲区的作用。比计算机的内存大,但是运算速度较慢。
计算机的结构有两种:
一、 冯*诺依曼结构:冯·诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。
二、 哈佛结构:哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。
cs: 表示代码
ds: 表示数据
ss: 表示栈段
ip: 表示段内偏移
pc: 表示指向下一条要执行的指令
readelf -a .o(.o文件) 表示查看.o文件的链接
计算机内的链接器不等同于加载器。
注:所有的汇编的入口为start.
有关全局变量与局部变量存放的问题:
一、 初始化的全局变量全放在data里。
二、 初始化的静态局部变量放在data里。
三、 未初始化的全局变量放在bss里。
四、 未初始化的静态局部变量放在bss里。
五、 除静态局部变量外的局部变量全在栈里面。
六、 常量是存放在text(只读)里面。
七、 向系统申请的内存空间全在堆里面。
注:在调用函数时栈是先进去的数据后出来。
一段称为栈针。
每个函数的局部变量在每个函数的栈针里面。
malloc 表示悬空指针。
const 表示只读,是放在代码段里
man的帮助:
例如:man 3 fputc 表示查看fputc的帮助。
其中会看到:int fputc (int c,FILE *stream)
其中的c为整形变量c
而*stream表示是文本指针