0

所以,我做了一个看起来像这样的函数:

const char **myFunction(char *string)
{   
    char *bufCopy = new char[strlen(string)];
    strcpy(bufCopy,string);
    char *tmp = func1(bufCopy);

    const char **RetVector = new const char* [6];
    RetVector[0] = tmp;

    return RetVector;
}

func1(即 strtok)修改了第一个参数,所以当我 delete[] 它给我堆损坏。我能做什么?

4

1 回答 1

1

必须始终跟踪您的原始分配bufCopy,只有那个可以是deleted。tmp可能只指向它的一部分(在某处的缓冲区内),所以你不能delete

于 2012-07-14T13:53:07.473 回答