0
所以,我做了一个功能,看起来像这样:如何删除一个函数修改后的2D数组?
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'应该分配'strlen(string)+ 1;'。空终止的额外字符。使用std :: vector –
Mahesh
2012-07-14 13:49:18
也许堆损坏是来自缓冲区溢出......你分配的字符串是一个字符短,因为strlen()不考虑终止'\ 0'。 – 2012-07-14 13:50:06
谢谢,bufCopy声明如下:char bufCopy [x] = {0}; – user1365914 2012-07-14 13:50:15