【发布时间】:2017-01-09 23:53:40
【问题描述】:
所以我动态地创建了一个字符串数组。然后,我为该数组中的每个元素分配一个通过调用 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);
【问题讨论】:
-
我为我的低层 c 道歉,因为我在 java 中编程太多了
标签: c string pointers memory-management free