linux 判断内存指针是否有效,linux c的指针与内存

指针

指针的声明用*a来表示,指针是保存内存地址的一种数据类型。另外,取地址用&a来做。

指针的调用和传值

int a = 100;

int point_t(int *a)

...

point_t(&a)

内存

计算机可以控制、接收电流的高(1)低(0)电位或者通(1)断(0)电路,这就产生了计算机能识别的二进制。

内存的最小单位是字节(Byte,1 Byte = 8 bits,一个字节是八个二进制位),一个字节可以表示00000000至11111111种意义(可以表示0~255元素)。

一个十六进制的数字可以表示4位二进制的数字(1111 = 0xf)。一个字节,既可以用8个二进制数字表示,也可以用2个16进制的数字表示。

32位操作系统

32位os的cpu地址总线是32位,支持232 个地址位,暨寻址空间是32位,最多能访问0~232次方(大约4GB空间)个内存地址,可以理解为只能访问并操纵最多4GB的内存空间。每个内存地址位记录一个唯一的内存地址编号,每个地址编号对应存储一个字节。

证明:

232=210 * 210 * 210 * 2 2

= 1024 byte * 1024 byte * 1024 byte * 4

= 1kb * 1024 byte * 1024 byte * 4

= 1mb * 1024 byte * 4

= 1gb * 4 = 4gb

内存管理

内存由os统一管理(编号、规划内存),内存大小的也会将多根内存条合并后统一计

你可能感兴趣的:(linux,判断内存指针是否有效)