首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

怎样delete字符型指针?该如何处理

2012-03-21 
怎样delete字符型指针?代码:#include iostream.hvoidmain(){//声明字符型数组和指针变量charstr[10]cha

怎样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;

热点排行