※ 引述《wa007123456 (大笨羊)》之铭言:
: 开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
: VC++
: 额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
: 问题(Question):
: 我们都知道 为了要让指标能够正常运作
: 必须要宣告指标的型别
: 当指标在跳位置取值的时候 才不会跳错
: 但是小弟今天有一个疑惑
: "那储存指标的型别资讯是储存在计算器的哪一部分?"
: 也就是说 她怎么记得这个指标是属于哪个型别
int main()
{
int i, j;
}
编译器要为 i, j 在内存留个位置, 所以需要知道 int i, j 要给多大,
写 c 编译器的人就要去查 c 规格书, 哦 int 我留个 4byte 就符合规格了。
所以会把 0x100 留给 i, 0x104 留给 j。
那如果是 int *p, *q; 呢?
编译器要留 uintptr_t 的大小给 p, q, 假设 uintptr_t 是 4byte 好了,
所以把 0x108 给 p, 0x10b 给 p。
大小有了, 型别要怎么纪录呢? 用表格,
p, int *
q, int *
i, int
j, int
这样编译器就帮这些变量保留了大小, 也知道这些变量的型别。
0x100 ~ 0x10b 为虚构的位址, 依平台不同而不同。