问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c++ delete[]编译错误

发布网友 发布时间:2023-07-03 15:11

我来回答

2个回答

热心网友 时间:2024-12-11 21:17

我找到一个此类问题的讨论贴,看你有没帮助吧
【HewpKanXue】:
你什么编译器阿?换Vs2005、dev_cpp试下。

【gjw310】:
const char *ch=new char[20];
delete [](char *)ch;
这样不会报错的

【akirya】:
const char *ch=new char[20];这样动态申请的时候你怎么使用啊?
内容是不可改写的.

【gjw310】:
例子:
char const *ch=new char[20];
memset((char *)ch,'E',20);
cout<<ch<<endl;

delete [](char *)ch;

【jixingzhong】:
char * const ch=new char[20]; //楼主你的本意是不是应该这样?
delete [] ch;

【jixingzhong】:
const char *ch=new char[20]; 这样申请的空间无法使用!(内容无法修改)

char * const ch=new char[20]; 可以使用空间,但是 ch 指向不允许修改,这个比较合理

【yixiao386】:
同意上面的

【believefym】:
vs2005貌似可以的

【wanfustudio】:
可以归可以

最好不要这么搞,内容不可改,没什么用处
要是修饰指针还可以

【yoyo_alex_lw】:
注意const 在*的前面还是后面,在前面,指针指向的内容不可修改,在后面,指针本身是常量,不可修改

【jiangyongtao】:
我编译了一下,提示如下语句。
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去掉就可以编译过,不知道能否证明我的说法。
欢迎大家指正。

【hongming1129】:
我需要的是一个指向const对象的指针,就内容不修改。而不是const指针。
delete [](char *)ch;编译通过,但出现运行时错误,程序崩溃,可以肯定还是此处delete错误。
jiangyongtao() 便宜时是error C2664: 'delete' : cannot convert parameter 1 from 'const char *' to 'void *'
而我的是rror C2665: 'delete' : none of the 2 overloads can convert parameter 1 from type 'const char *'
完全不同,这有些怪,搞不明白这为什么。
我用的编译器是VS6.0,到VS2005下面编译,通过,但运行时出现错误,程序崩溃,还是delete错误。

具体程序如下:

#include <iostream>
#include <string>
#include <vector>

using namespace std;

int main()
{
string str;
vector<string> svec;
while(//cin>>str
getline(cin,str))
{
if(str=="--end")
break;
svec.push_back(str);
}
int count=0;
for(vector<string>::size_type i=0;i!=svec.size();++i)
for(string::size_type j=0;j!=svec[i].size();++j)
++count;
char *cp=new char[count];
for(//vector<string>::size_type
i=0;i!=svec.size();++i)
{
for(string::size_type j=0;j!=svec[i].size();++j)
{
*cp=svec[i][j];
cout<<*cp;
++cp;
}
cout<<endl;
}
cout<<endl;
cp-=count;
delete [] cp;
const int N=50;
for(//vector<string>::size_type
i=0;i!=svec.size();++i)
{
const char *ch=new char[N];
ch=svec[i].c_str();
char *chp=new char[20];
sprintf(chp,"%x ",&ch);//atoi(chp);
strcat(chp,ch);
cout<<chp<<endl;
delete [] chp;
delete [] ch;
}

return 0;
}

【mymtom】:
const char *ch=new char[N];
...
ch=svec[i].c_str(); // 内存泄漏
...
delete [] ch; // 这时 ch 还是 svec[i].c_str(), 怎么可以delete 呢 ?

【yongmingcheng】:
VS2005里 可以

【hongming1129】:
谢谢mymtom()提醒,原来是ch已经指向另一个地址了,而非用new分配的那个。造成泄漏。
改为:
char *ch=new char[N];
strcpy(ch,svec[i].c_str());
就OK啦。
谢谢各位热心的朋友,散分。

热心网友 时间:2024-12-11 21:18

delete[] a
overloads 无法完成这个操作符的重载。。。说明你这个语句有歧义。
delete[] a删除的是一个new出来的一个对象数组,而不是单个对象
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
网络宣传文案心碎,句句获赞! 关于朋友圈上万人点赞转发的说说 人生看的很透彻的经典句子 超现实超扎心的说说大全2019最新 心脏血管堵塞吃什么食物 投资理财有什么前景 pp理财什么情况 P2P理财行业的前景如何? 中国目前的财富管理现状是什么情况? 呼吸皮沙发寿命多久 “皮沙发的呼吸寿命” 呼吸皮沙发寿命多久 各位大哥大姐帮帮忙,有谁知道中国有哪些大学与以色列的大学有留学或者... 晚上醒来大脑亢奋——导致浑身灼烧感——导致剧烈心跳——害怕,失眠... 帮我翻译翻译一下这歌歌词,日本的 怎么获得柔软羽毛? 三生三世步生莲完结了吗? 翻译成中文!(除英文) 于田县维吾尔语怎么说 三生三世步生莲足下千劫一共有几章? ...韩剧和韩国电影.(丑女大翻身看过了)或者是变漂亮,变时尚的那种韩剧... 樱花校园模拟器怎么使用外国大佬建筑的id 樱花校园模拟器怎么重置id 雅琪是什么意思 口袋妖怪黑二重生山脉怎么陪贝尔去调查 如何在生命尽头,减轻病人的痛苦? 如果有人不想治疗了怎么办? 《我的乌托邦初恋》最新章节全文阅读免费下载百度网盘资源,谁有... 丈夫有外遇的八字,能有什么办法知道老公外遇的女人的生辰八字? 宁静什么星座 曾经看过一本LOL同人竞技小说,讲主角穿越另一时空,那儿LOL特别受欢迎... S28赛季怎样抽到安琪拉的皮肤? 哪个网站可以下载重生赵致敬txt? 谁有C++ primer 5版本及以上的PDF高清晰版的(扫描不清晰的不要), 中 ... 欧美国家的人看不看火影和海贼王? 《奇迹暖暖》7-支线5攻略 听说很多看《海贼王》的人一般不看《火影忍者》,是真的吗? 王牌竞速国际服什么时候开服2022 为何《海贼王》比《火影忍者》口碑好,在欧美和中国人气却不如《火影... 奇迹暖暖11-7少女级s如何搭配攻略 谁能告诉我海贼王人气在国外和火影比怎样?(我看了好多答案,有人说海... yamawa挤牙丝攻哪家好 ...我和妻子经常需要同房。孩子八岁了 我不理会这样好吗? ...我一直和我儿子睡,我儿子今年都八周岁了,有一次我提出来说要和... 孩子在旁边睡的时候!夫妻房事都是怎么做夫妻房事的!我老婆的孩子... 我想买个尾戒佩戴防小人,请问有什么讲究的? 熙溪十月女性清洁湿巾安全吗 ka辽宁展望生物项目是卖什么的 为什么电脑c盘存储空间越来越小呢? 男友心里想别的女孩子怎么办, 和闺蜜越来越像是怎么回事? 男朋友为什么那么想别的一个女的,是什么意思他。?