Article View: comp.std.c
Article #1203Memory alignment
From: Tim Langevin
Date: Tue, 15 Sep 1992 16:27
Date: Tue, 15 Sep 1992 16:27
69 lines
1571 bytes
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!langevinShow 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