我正在动态创建字符串数组,然后为该数组中的每个元素分配一个指向调用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);