c++中怎么delete一个用new申请内存的指针

c++中怎么delete一个用new申请内存的指针,char*p=newchar;*p="hello”;deletep;//或者delete[]p;这样会报错,为什么?因... c++中怎么delete一个用new申请内存的指针,
char * p=new char;
*p="hello”;
delete p;//或者delete [] p;
这样会报错,为什么?
因为我要的空间不固定,所以不要申请固定的空间大小,这样子该怎么释放指针
展开
 我来答
空雪梦见
2013-11-30 · TA获得超过5598个赞
知道大有可为答主
回答量:2522
采纳率:75%
帮助的人:1210万
展开全部
*p="hello”; <- 你报错根本就是报在这一句而不是delete吧?……
p的类型是char*,*p的类型是char
但是hello的类型是 const char*
一个const char*怎么能赋值给char…………

申请空间只能固定大小不能不固定大小,不知道大小的话是无法申请空间的。不过这个大小可以是变量,以下代码需要头文件cstring
const char* pstr = "hello";
int pstrLen = std::strlen(pstr) + 1;
char* p = new char[pstrLen];
std::strcpy(p, pstr);
delete[] p;

如你所见,char*类型的字符串复制是不能用等号的。
百度网友63c8b9e
2013-11-30 · TA获得超过202个赞
知道小有建树答主
回答量:283
采纳率:0%
帮助的人:143万
展开全部
char * p=new char; // 你申请的是一个字节的p指针
*p="hello”; //p指向的内容为“hello”,但是越界了
delete p;//或者delete [] p;//用delete p 释放是正确的,delete [] p是用来释放数组的。

如果申请的空间不确定,则简单的办法是用容器,系统自己动态的申请、释放内存。
如果想自己管理内存,就没有简单的办法了,需要重新申请一块更大的内存,并且将*p的内容与新的内容放进新申请的内存中。delete []p; 就 哦了。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
453743739
2013-11-30 · TA获得超过343个赞
知道小有建树答主
回答量:515
采纳率:0%
帮助的人:315万
展开全部
char * p=new char[sizeof("hello")/sizeof(char)];
*p="hello”;
delete[] p;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式