二维数组被函数修改后如何删除

How to delete 2D Array after its modified by a function?

本文关键字:删除 何删除 函数 修改 二维数组      更新时间:2023-10-16

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

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)修改了第一个参数,所以当我删除[]时,它会导致堆损坏。我能做什么?

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