小编Jav*_*ant的帖子

我可以/我应该释放strtok返回的指针

所以我动态创建一个字符串数组.然后我通过调用strtok为该数组中的每个元素分配一个返回的指针.在我的过程结束时,我需要重做一切,我一直试图释放所述数组元素中的指针,但我不断收到错误说明

*** glibc detected *** ./prgm: munmap_chunk(): invalid pointer: 0x00007fff600d98

另外,在循环结束时释放inputStr是否有意义?

我的逻辑"根本不合逻辑"在哪里思考错误...例如代码

   char** argvNew = (char**)calloc(33,sizeof(char*));
   char inputStr[128];  
   do{    
        scanf("%127[^\n]%*c", inputStr);
        token = strtok(inputStr, delim);

        /* Add tokens to array*/
        varNum= 0;
        for(i = 0; token != NULL; i++){
            varNum++;
            argvNew[i] = token;
            token = strtok(NULL, delim);
        }
        argvNew[i] = NULL;

       //Free argvNew 
        for(i = 0; i < varNum;i++){
            printf("Deleting %i, %s\n",i,argvNew[i]);
            free(argvNew[i]);
        }
  while(1);
Run Code Online (Sandbox Code Playgroud)

c string free pointers memory-management

1
推荐指数
1
解决办法
528
查看次数

标签 统计

c ×1

free ×1

memory-management ×1

pointers ×1

string ×1