Вы можете использовать memmove()
, чтобы переместить последние четыре байта в начало выделенного блока, а затем использовать realloc()
, чтобы уменьшить его до четырех байтов.
Но зачем тебе это? Вы всегда можете просто получить еще один указатель на последние четыре байта памяти, например:
typedef unsigned char uint8;
uint8* psevenbytes = (uint8*)malloc(sizeof(uint8) * 7);
if (psevenbytes != NULL)
{
uint8* pfourbytes = psevenbytes + 3;
// ... do stuff
free(psevenbytes);
psevenbytes = NULL;
}
Или вы можете использовать struct
.