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

请问一个delete语句的有关问题

2012-04-07 
请教一个delete语句的问题。constchar*chnewchar[20]delete[]ch以上语句编译时出现错误:rrorC2665:delet

请教一个delete语句的问题。
const   char   *ch=new   char[20];
delete   []   ch;
以上语句编译时出现错误:rror   C2665:   'delete '   :   none   of   the   2   overloads   can   convert   parameter   1   from   type   'const   char   * '

是不是const型的不能释放呀?还是其他什么?
请教了。

[解决办法]
const char *ch=new char[20];这样动态申请的时候你怎么使用啊?
内容是不可改写的.
[解决办法]
const char *ch=new char[20]; 这样申请的空间无法使用!(内容无法修改)


char * const ch=new char[20]; 可以使用空间,但是 ch 指向不允许修改,这个比较合理
[解决办法]
注意const 在*的前面还是后面,在前面,指针指向的内容不可修改,在后面,指针本身是常量,不可修改
[解决办法]
我编译了一下,提示如下语句。
error C2664: 'delete ' : cannot convert parameter 1 from 'const char * ' to 'void * '
我觉得const char* ch声明了一个const char型的指针ch并指向了char[20]的空间。
delete[] ch将ch指向的内存收回,那么指针ch将指向void而不是char了,而恰恰ch被声明为了const型,所以无法转换。
将const去掉就可以编译过,不知道能否证明我的说法。
欢迎大家指正。
[解决办法]
const char *ch=new char[N];
...
ch=svec[i].c_str(); // 内存泄漏
...
delete [] ch; // 这时 ch 还是 svec[i].c_str(), 怎么可以delete 呢 ?

热点排行