🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.std.c
Article #1203

Memory alignment

#1203
From: Tim Langevin
Date: Tue, 15 Sep 1992 16:27
69 lines
1571 bytes
I'd like the net.wisdom on this one...

   Is the following piece of code conforming ANSI C?
   Is there a better way to do this?

Thanks,

Tim Langevin


**start here**

#include <stddef.h>
#include <stdlib.h>

typedef union
{
  enum { red, green, blue } a;
  signed char b;
  unsigned char c;
  short d;
  unsigned short e;
  int f;
  unsigned int g;
  long h;
  unsigned long i;
  float j;
  double k;
  long double l;
  char * m;
} ALL_TYPES;

typedef struct 
{
  size_t size;
  void *next;
  ALL_TYPES aligner;
} HEADER;

#define TEST_SIZE 20

void *get_mem (size_t size);
void free_mem (void * mem_ptr);

int main (void)
{
    void * mem_ptr;
    mem_ptr = get_mem (TEST_SIZE);
    free_mem (mem_ptr);
    return 0;
}

void *get_mem (size_t user_size)
{
    void * mem_ptr;
    HEADER *header;

    mem_ptr = malloc (sizeof (HEADER) + user_size);
    header = (HEADER *) mem_ptr;
    header->size = user_size;
    header->next = 0;

    return (void *) ((char *)mem_ptr + sizeof(HEADER));
}

void free_mem (void * mem_ptr)
{
    free ( (void *) ((char *) mem_ptr - sizeof (HEADER)));
}
Technical Details
Message-ID: <lbc3neINNtt@news.bbn.com>
Path: arc1-ca.pugleaf.net!sparky!uunet!noc.near.net!news.bbn.com!indian.bbn.com!langevin

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!sparky!uunet!noc.near.net!news.bbn.com!indian.bbn.com!langevin
From: langevin@indian.bbn.com (Tim Langevin)
Newsgroups: comp.std.c
Subject: Memory alignment
Date: 15 Sep 1992 16:27:26 GMT
Organization: Bolt Beranek and Newman Inc., Cambridge MA
Lines: 72
Distribution: world
Message-ID: <lbc3neINNtt@news.bbn.com>
Reply-To: langevin@indian.bbn.com. (Tim Langevin)
NNTP-Posting-Host: bbn.com