簡単に言うと、割り当てられた各ブロックに関連する制御情報が含まれる (unsigned char 型の) 割り当てルーチンを作成しようとしています。本格的なメモリ マネージャーを作成しようとしているわけではありませんが、いくつかの特定の要件があります。
制御構造のサンプル
typedef struct _control_data
{
u8 is_segment;
:
:
:
struct _control_data* next;
}control_data;
ユーザーがサイズ 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;
}
上記のアクセスは合法で移植可能ですか?