C++ delete 释放二维指针

来源:百度知道 编辑:UC知道 时间:2024/07/02 15:36:03
for(i=1;i<=100003;i++)
{
nStr = Split("aa:bb:cc:dd",":");
cout<<nStr[0]<<endl;
cout<<nStr[1]<<endl;
cout<<nStr[2]<<endl;
cout<<nStr[3]<<endl;

//*nStr = NULL;

}
函数
char **Split(char *Source,char *FindStr)
{
char *Stack = new char[1]; //动态数组,栈
char **rtSck = new char*[1]; //动态数组,返回栈
char *dest;
char *Find;

int i_StCount = 0; //栈的下标
int i_rtCount = 0; //返回栈下标

//**rtSck = new char[1];

dest = Source; //源数据
Find = FindStr; //查找数据

memset(Stack,'\0',sizeof(Stack));

while(*dest != '\0')
{
if(*dest != *Find)
{
*(Stack + i_StCount) = *dest;
}
else if(*dest == *Find)
{
*(rtSck + i_rtCount) = Stack;
i_rtCount++;

i_StCount = -1;

delete不了是因为你访问越界了吧
char *Stack = new char[1]; //动态数组,栈
char **rtSck = new char*[1]; //动态数组,返回栈
所谓动态,没见你怎么动。 不会写就用vector吧,既然是C++就得有C++的写法

delete二维数组需要delete行和列。请看下面的代码:
for(i=1;i<=100003;i++)
{
delete[]nStr[i];
nStr[i]=NULL;
}
delete []nStr;
nStr=NULL;

new和delete是对应的一组内存操作函数,释放内存应该要
delete[]nStr;
delete[]Stack;
delete[]rtSck ;

delete []nStr