有人可以帮助我如何释放二维数组在这里。我尝试使用循环来释放,但我得到一个错误说:
*** 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
函数返回一个指向您正在标记的字符串的指针,该指针覆盖您先前分配的指针,导致您丢失指向已分配内存的指针。
有两种解决方案:不分配内存(也不释放),或者复制到已分配的内存。