二维数组被函数修改后如何删除
How to delete 2D Array after its modified by a 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)修改了第一个参数,所以当我删除[]时,它会导致堆损坏。我能做什么?
您必须始终跟踪bufCopy
的原始分配,只有那个可以是delete
d。tmp
可能只指向它的一部分(在缓冲区内的某个地方),所以您不能delete
。
相关文章:
- 在 C++ 的自定义运算符中删除与删除[](不同于常见的删除与删除[]问题)
- C++链表删除和删除返回功能
- 从链表中删除值/删除未动态分配的值
- 当我使用dynamic_cast并删除对象删除时,析构函数是如何工作的?
- 如何在 C++ 中使用删除运算符删除单个数据
- 为什么擦除+删除比删除更有效
- 用户使用C++中的删除功能删除文件
- 删除和删除[]在内部如何工作?
- 当删除或删除[]被执行时,计算机会做什么?
- 如何在不删除C++集中删除项目?
- 如何在C 中删除或删除.jpg和.dpx图像文件
- 删除或删除 [] 在新的 int[][] 上
- 在 C++ 中使用 try-catch 进行删除 [] 或删除操作是否必要
- C++删除和删除中的逻辑[]
- 是否有任何工具可以警告可能滥用删除或删除[]
- 在函数调用中堆和删除.如何删除本地动态内存
- 删除[]与删除在for循环中
- 使用单个删除运算符删除多个指针
- 如何替换删除和删除[]
- Qt;Q删除和删除小部件.setParent(NULL)是必需的