char pointers problem

Started by
1 comment, last by Red Ghost 21 years, 10 months ago
Hi all, I have developped a token system to separate the parsing of initialization files from the actual initialization of my app: my app reads up a file entry and outputs a token, then this token is used to initialize the function. The advantage of this system is that I can use one parsing library to load/save plain text tokens while profiling my app, and when releasing my app use another parsing library to load/save compiled tokens. On with my problem: My program crashes because of a memory leak within that system. I have checked many times all the functions and analyzed my debug file, I cannot tell exactly where it is. I only know that it is closely linked to the data members of my token struct. Here is a short version of my Token struct:
  
#define NB_TEXT 2

struct Token {
   char* text[NB_TEXT];
   Token* n_token;
};
  
When I get a new token, I set each Token.text variable to NULL.
  
   Token* My_Token;

   My_Token = new Token;
   for(int i=0; i<NB_TEXT; i++)
      My_Token->text[i] = NULL;
  
When parsing a line (stored in my Buffer variable) in my file using the input string stream library, I do:
  
   istrstream ins(Buffer, strlen(Buffer));

   My_Token->text[0] = new char [strlen(Buffer)-1];
   ins >> My_Token->text[0];
  
This token is then passed to my function for initialization and deleted afterwards:
  
   char* Caption;

   Caption = new char[strlen(my_token->text[0])];
   strcpy(Caption, my_token->text[0]);

/////////////////////////////////////////

   for(int i=0; i<NB_TEXT; i++)
      if (My_Token->text[i]!=NULL)
         delete My_Token->text[i];

   delete My_Token;
  
When the function is not used anymore, it is deleted in memory:
  
   delete Caption;
  
My program crashes just after deleting my token on the 4th or 5th use of that function. The log files show that the function is correctly initialized, and that the initilization file is correctly parsed. The structure seems correctly deleted. I also that before using that code, the program was perfectly running (I was not using tokens, the parser was directly initializing the function instead of creating a token). I am running out of ideas for the moment. Does anyone have an idea ? Thanks in advance. Red Ghost.
Ghostly yours,Red.
Advertisement
Try: delete [] Caption

Regards Mats
Whoa ! I should rest more often, bugs would be easier to catch.
Thanks Mats, I had overlooked the couple of delete ...

Red Ghost.
Ghostly yours,Red.

This topic is closed to new replies.

Advertisement