[ create a new paste ] login | about

Link: http://codepad.org/KsD1qG63    [ raw code | output | fork ]

AaronMiller - C, pasted on Mar 9:
#define memory(p,n) (!(p)&&(n) ? malloc((n)) : (p)&&(n) ? realloc((p), (n)) : (free((p)), (void *)0))

#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>

int logf(const char *format, ...) {
  va_list vl;
  int r;

  va_start(vl, format);
  r = vfprintf(stdout, format, vl);
  va_end(vl);

  fflush(stdout);
  return r;
}

int main() {
#define MESSAGE "Hello, world!"
  char *p;

  logf("Allocating...\n");
  p = (char *)memory((void *)0, 1);
  logf("Setting %p...\n", (void *)p);
  *p = 0;

  logf("Re-allocating %p...\n", (void *)p);
  p = (char *)memory((void *)p, sizeof(MESSAGE));
  logf("Copying \"%s\" to %p...\n", MESSAGE, (void *)p);
  memcpy(p, (const void *)MESSAGE, sizeof(MESSAGE));

  logf("Trying to display %p...\n", (void *)p);
  printf("%s\n", p);

  logf("Freeing %p...\n", (void *)p);
  p = (char *)memory((void *)p, 0);

  logf("Done!\n");
  return 0;
}


Output:
1
2
3
4
5
6
7
8
Allocating...
Setting 0x804a078...
Re-allocating 0x804a078...
Copying "Hello, world!" to 0x804a078...
Trying to display 0x804a078...
Hello, world!
Freeing 0x804a078...
Done!


Create a new paste based on this one


Comments: