有人能帮我把二维数组放在这里吗。我试着使用循环释放,但我得到一个错误说:

 *** glibc detected *** ./assignment4: free(): invalid pointer: 0x0932b196 ***

问题是,当我单独释放第0个元素时,我不会有任何问题但是当我释放元素[1]到[7]时,我得到了错误。
char ** stringOne;
stringOne = malloc(sizeof(char*)*8);

stringOne[0] = malloc(sizeof(char)*6);
stringOne[0] = strtok(listofdetails[0], " ");

for(i=1;i<8;i++)
{
    stringOne[i] = malloc(sizeof(char)*6);
    stringOne[i] = strtok(NULL, " ");
}

for(i=0;i<8;i++) // FREEING memory
{
    free(stringOne[i]);
}

最佳答案

strtok函数将一个指针返回到要标记的字符串中,该指针将覆盖先前分配的指针,从而导致丢失指向已分配内存的指针。
有两种解决方案:不分配内存(也不释放内存),或者复制到分配的内存中。

关于c - C-如何释放以下已分配的内存,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25367558/

10-11 23:03