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) が最初の引数を変更したため、[] を削除すると、ヒープが破損します。どうすればよいですか?

4

1 に答える 1

1

あなた常にあなたの元の割り当てを追跡しなければなりませんbufCopy、その1つだけがdeletedであることができます。tmpおそらくその一部(どこかのバッファ内)を指しているだけなので、それはできませんdelete

于 2012-07-14T13:53:07.473 に答える