非常简单地说,我们正在尝试编写一些分配例程(类型为 unsigned char),其中每个分配的块都有一些与之关联的控制信息。我们不是在尝试编写一个完整的内存管理器,而是有一些特定的要求
我们的控制结构示例
typedef struct _control_data
{
u8 is_segment;
:
:
:
struct _control_data* next;
}control_data;
当用户为 size 40 调用 alloc 时,我们将分配
unsigned char* data_ptr = (unsigned char*)malloc(sizeof(control_data) + size);
return(&data_ptr[sizeof(control_data]);
稍后用户将传递分配期间返回的指针,我们要访问控制信息。
void do_some_processing(unsigned char* data_ptr)
{
struct control_data* c_ptr = (data_ptr - sizeof(control_data));
c_ptr->is_segment = TRUE;
c_ptr->next = NULL;
}
上述访问是否合法且可移植?