CHAR *strDest;
strDest = strtok(buf,",");是否返回指针类型的函数,返回值需要释放么?怎么做呢?

解决方案 »

  1.   

    以下是微软提供的代码,strtok返回的指针是buff中的某一个字符串的地址/* STRTOK.C: In this program, a loop uses strtok
     * to print all the tokens (separated by commas
     * or blanks) in the string named "string".
     */#include <string.h>
    #include <stdio.h>char string[] = "A string\tof ,,tokens\nand some  more tokens";
    char seps[]   = " ,\t\n";
    char *token;void main( void )
    {
       printf( "%s\n\nTokens:\n", string );
       /* Establish string and get the first token: */
       token = strtok( string, seps );
       while( token != NULL )
       {
          /* While there are tokens in "string" */
          printf( " %s\n", token );
          /* Get next token: */
          token = strtok( NULL, seps );
       }
    }
      

  2.   

    楼上的解释还是不明白,msdn我有看,不懂才来问的,谁能说的肯定一点,返回的指针是否需要释放?//这里,strtok返回一个指针,内容是string中第一个seps之前的字符串,是char*
    token = strtok( string, seps );
    //当错误时,返回空指针NULL/* Get next token: */
    /*这里在上一个后面继续找下一个标识,但还用那个指针接收,我只想知道,这样的话,之前返回的那块空间去哪里了。要不要回收?字串少了不明显,如果字串是几k,执行多了,难免出问题。这里会有内存泄漏么。*/
    token = strtok( NULL, seps );我问的不是用法,还是谢谢楼上朋友的热心。
      

  3.   

    不需要释放,它始终指向string内部的某个地方。
    把string释放了不就可以了。string是你提供给他的。比如char * a = new char [100];
    char *b = a+1;
    free a[];
    这个b还要释放么?不需要。
      

  4.   

    不要释放,这是这个函数的返回指针,进过一个作用域,它就消失了。这不同于new/malloc出来的指针,因为它指向了一个堆,这是由系统开出来的,所以不用了,要还给系统。