首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

问一上C指针的有关问题

2013-02-17 
问一下C指针的问题指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区-----------------------

问一下C指针的问题
指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区
--------------------------
这个“内存区”怎么理解,是指系统还是指编译器
[解决办法]

引用:
我认为不是系统,也不是编译器,而就是一块实实在在的内存,也可以理解成存放指令或者一切物品的带编号的指令
是虚拟地址还是物理地址?应该是虚拟地址吧?当然通过映射之后也是物理地址。
------解决方案--------------------


你所说的内存区:
指的是系统内核将真实的内存映射成的虚拟内存,32位系统就是映射4G个虚拟内存地址,其中有1G个被内核占用。然后就是咱们看到3G个。。你所说的内存区就是指的这3G个内存地址,计算机中所有的操作都在这些地址里存放,无论是指针还是变量,具体可以看一下c语言存储空间布局。虚拟内存地址对应着真实的硬件内存物理地址
[解决办法]
LS的那位,我看到啥三极管就不想往下看了。。

所谓内存区,是由编译器决定,OS分配的。。

然后所谓的堆和栈,对编译器、对OS来说木有任何区别。。~~

32位系统的OS可以分配给每个进程4G的内存空间(2的32次就是4G,然后别去管什么核心区用户区的),你所说的内存区就是指这一块内存(当然是虚拟或者逻辑的,不是物理的)。。。
[解决办法]
int *p这个指针是静态分配的,在栈里面分配的, p=&a就指向一个内存区,free(p)之后那么指向的内存权限还给了操作系统

热点排行