/*
 * Alterando o tamanho do segmento de dados
 */ 
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

char str_dados[10];

int main() {
  char str_pilha[10], *topo;
  int pagesize = getpagesize();

  printf("Tamanho em bytes de um endereco: %lu\n", sizeof(char*));
  printf("Tamanho em bytes de uma pagina: %d\n", pagesize);
  
  printf("str_pilha  = %p\n", str_pilha);
  printf("main       = %p\n", main);  
  printf("str_dados =  %p\n", str_dados);

  topo = sbrk(0);
  printf("Topo da area de dados = %p\n", topo);

  *(topo-1) = 0;


  if (sbrk(1024*pagesize) != -1) {
    topo = sbrk(0);
    printf("Topo da area de dados = %p\n", topo );
  }

  *(topo-1) = 0;
  /* Segmentation fault? */
  /*topo = 0; */
  
  return 0;
}