c++ - Allocate memory for huge node tree dynamically -


i'm trying make function allocates memory in blocks , able assign memory pointer different structures linked together.

#define memsize 50*1024*1024*sizeof(char) #include "globals.h" void *addblock(void){     memstart = (char*) calloc(1,memsize);     if(memstart==null){         printf("hittade inte minne...:\n");         getchar();         throw 1;     }     memptr = memstart;     return memstart; }  void* getspace(size_t size){ //gör nytt block eller putta fram pekaren                              //makes new block or increases ptr      void *tmp = null;//where data should stored     if(( memptr+size+1 >= memstart+memsize) )         tmp = addblock();     else     {         tmp = memptr;         memptr+=size;     }     return tmp; }  void initmem(void){ //init of memory globals     addblock(); } 

memptr , memstart extern char*. memstart start of block , memptr at. initmem run in main upon start.

globals .h

extern char *memstart; extern char *memptr; 

globals .cpp

char *memstart; char *memptr; 

e.g. struct node* thenode = getspace(sizeof(struct node));

but code works bad , gives lot of glitches in program.

is there common way this? when allocate memory each structure malloc there way overhead , that's huge deal since tree consists of millions of nodes.

this leg of code has problem

if(( memptr+size+1 >= memstart+memsize) )     tmp = addblock(); 

because not advancing memptr size.


Comments

Popular posts from this blog

SPSS keyboard combination alters encoding -

Add new record to the table by click on the button in Microsoft Access -

javascript - jQuery .height() return 0 when visible but non-0 when hidden -