title: Do I need to free the strtok resulting string?
body: <p>Or rather, how does strtok produce the string to which it's return value points? Does it allocate memory dynamically? I am asking because I am not sure if I need to free the token in the following code:</p>
  
  <p>The STANDARD_INPUT variables is for exit procedure in case I run out of memory for allocation and the string is the tested subject.</p>
  
  <pre><code>int ValidTotal(STANDARD_INPUT, char *str)
  {
      char *cutout = NULL, *temp, delim = '#';
      int i = 0; //Checks the number of ladders in a string, 3 is the required number
      temp = (char*)calloc(strlen(str),sizeof(char));
      if(NULL == temp)
          Pexit(STANDARD_C); //Exit function, frees the memory given in STANDARD_INPUT(STANDARD_C is defined as the names given in STANDARD_INPUT)
      strcpy(temp,str);//Do not want to touch the actual string, so copying it
      cutout = strtok(temp,&amp;delim);//Here is the lynchpin - 
      while(NULL != cutout)
      {
          if(cutout[strlen(cutout) - 1] == '_')
              cutout[strlen(cutout) - 1] = '\0'; \\cutout the _ at the end of a token
          if(Valid(cutout,i++) == INVALID) //Checks validity for substring, INVALID is -1
              return INVALID;
          cutout = strtok(NULL,&amp;delim);
          strcpy(cutout,cutout + 1); //cutout the _ at the beginning of a token
      }
      free(temp);
  return VALID; // VALID is 1
  }
  </code></pre>