All pastes #388453 Raw Edit

Stuff

public text v1 · immutable
·published 2007-03-10 02:16 UTC
rendered paste body
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

typedef struct {
  char *name;
  int x;
} blah_t;

int main() {
  blah_t **b;
  blah_t ***bp = &b;
  void *p = NULL;

  (*bp) = malloc(sizeof(blah_t **));
  (*bp)[0] = malloc(sizeof(blah_t *));
  p = (*bp)[0];
  b[0]->name = strdup("line1");

printf("&b[0] = 0x%X\n", &b[0]);
  (*bp) = realloc((*bp), sizeof(blah_t *) * 2);
  (*bp)[1] = malloc(sizeof(blah_t *));
  b[1]->name = strdup("line2");

printf("&b[0] = 0x%X\n", &b[0]);
  (*bp) = realloc((*bp), sizeof(blah_t *) * 3);
  (*bp)[2] = malloc(sizeof(blah_t *));
  b[2]->name = strdup("line3");

printf("&b[0] = 0x%X\n", &b[0]);
  (*bp) = realloc((*bp), sizeof(blah_t *) * 90000);
  (*bp)[90000 - 1] = malloc(sizeof(blah_t *));
  b[90000 - 1]->name = strdup("line4");

printf("&b[0] = 0x%X\n", &b[0]);
  (*bp) = realloc((*bp), sizeof(blah_t *) * 90000 * 3);
  (*bp)[(90000 * 3) - 1] = malloc(sizeof(blah_t *));
  b[(90000 * 3) - 1]->name = strdup("line5");

printf("&b[0] = 0x%X\n", &b[0]);
  printf("b[0]->name: %s\n", b[0]->name);
  printf("b[1]->name: %s\n", b[1]->name);
  printf("b[2]->name: %s\n", b[2]->name);
  printf("b[89999]->name: %s\n", b[89999]->name);
  printf("b[big]->name: %s\n", b[(90000 * 3) - 1]->name);


  free(b[0]->name);
  free(b[0]);

  free(b[1]->name);
  free(b[1]);

  free(b[2]->name);
  free(b[2]);

  free(b[90000 - 1]->name);
  free(b[90000 - 1]);

  free(b[(90000 * 3) - 1]->name);
  free(b[(90000 * 3) - 1]);

  free(b);
  return 0;
}