c语言 如何记录指针所申请内存空间大小
如何获得指针申请的内存大小,这个值自己肯定是知道的,但是操作系统是如何得知的,有没有什么数据结构保存着这个数值?
#include <stdio.h>
int main(){
char a[] = "hello world!';
char *p = a;
//*(p+20) = 'z';
printf("%s",p);
return 0;
}
如果加上注释掉的代码的话,接下来打印的就是乱码,这里p相当于申请了13个字节的内存空间,p占4个字节,保存的是'h'的地址,那记录p的指向空间的大小的结构是什么。操作系统是怎么知道p所申请的内存空间大小的。