堆空间内存分配时,首地址处记录分配内存的大小会不会占用内存空间。
大小记录在首地址处,如果占用了首地址的内存空间,首地址又怎么能用来存储数据了呢。
比如 char *a = new char;
分配的一个字节空间需要用来记录分配内存的大小,再拿来存字节‘a',那么存储的大小信息不就丢失了吗?
求解答,万分感谢!
堆空间内存分配时,首地址处记录分配内存的大小会不会占用内存空间。
大小记录在首地址处,如果占用了首地址的内存空间,首地址又怎么能用来存储数据了呢。
比如 char *a = new char;
分配的一个字节空间需要用来记录分配内存的大小,再拿来存字节‘a',那么存储的大小信息不就丢失了吗?
求解答,万分感谢!
a是在栈上,只不过他申请的空间是在堆上,记录分配内存的大小和地址是在页的首地址,不会用来存放a所对应的数据,a申请的地址不会在首地址处。