q = (struct mymalc *) ((char *) p + sizeof(struct mymalc) + size);
时间: 2023-11-18 09:04:50 浏览: 102
深入剖析C++中的struct结构体字节对齐
这段代码中,首先将指针p强制转换为字符型指针,然后加上结构体mymalc的大小和变量size的值,得到一个新的指针q。
假设p指向的是一个分配给用户的内存块的起始地址,而这个内存块前面有一个结构体mymalc,那么指针p加上sizeof(struct mymalc)的值就指向了结构体mymalc的末尾,再加上size的值,就得到了一个新的指针q,指向了原先内存块的末尾后面一段空闲的内存空间的起始地址。
这段代码可能是用来分配一段连续的内存空间,并在这段空间的前面存储一个结构体mymalc的信息。指针p指向用户可用的内存空间的起始地址,而指针q指向空闲的内存空间的起始地址。
阅读全文