怎样delete字符型指针?
代码:
#include <iostream.h>
void main()
{
//声明字符型数组和指针变量
char str[10];
char *strip=str;
//输入输出
cout < < "str= ";
cin> > str; //用字符数组输入字符串
cout < < "str= " < <str < <endl;
cout < < "strip= " < <strip < <endl;
cout < < "strip= ";
cin> > strip; //用字符指针变量输入字符串
cout < < "str= " < <str < <endl;
cout < < "strip= " < <strip < <endl;
//利用指针变量改变其指向字符串的内容
*(strip+2)= 'l ';
cout < < "str= " < <str < <endl;
cout < < "strip= " < <strip < <endl;
//动态为字符型指针变量分配内存
strip=new char(100);
cout < < "strip= ";
cin> > strip; //用字符指针变量输入字符串
cout < < "str= " < <str < <endl;
cout < < "strip= " < <strip < <endl;
//delete strip;加上这句就报错了。
}
[解决办法]
strip=new char(100);
这个分配最终只是分配一个char,并且伪初始化这个char为100
你cin的时候会不会越界
strip=new char[100];
后面使用delete[] strip;
[解决办法]
strip=new char(100);
delete[] strip;
这样也不会出错,
但是和你的本意不符合:
你本意是要输入一个字符串,接收并比较数组;
但是这样的结果是 输入一个字符串,但是只接收了一个字符 .....
(甚至可能接收的只是 输入缓冲中的 回车而已)
[解决办法]
strip=new char(100);
这个分配最终只是分配一个char,并且伪初始化这个char为100
你cin的时候会不会越界
===========
ms不会越界
[解决办法]
try like this:
delete [] strip;
you 'd better write main() like this:
int main()
{
other statements;
return 0;
}
[解决办法]
strip=new char(100); //只申请了一个空间,并用100赋值
cout < < "strip= "; //但你在这里输入了一大堆,占用了非法的内存
cin> > strip; //用字符指针变量输入字符串
cout < < "str= " < <str < <endl;
cout < < "strip= " < <strip < <endl;
//delete strip;加上这句就报错了 //所以在这delete就出错
而你的意思是申请一段空间,所以要改成:
strip=new char[100];
cout < < "strip= ";
cin> > strip;
cout < < "str= " < <str < <endl;
cout < < "strip= " < <strip < <endl;
delete []strip;