如何在通过函数修改后删除2D数组?

时间:2012-07-14 13:47:06

标签: c++ arrays function

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

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)修改了第一个参数,所以当我删除[]时,它会给我堆损坏。我该怎么办?

1 个答案:

答案 0 :(得分:1)

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