c++中怎么delete一个用new申请内存的指针,
char * p=new char;
*p="hello”;
delete p;//或者delete [] p;
这样会报错,为什么?
因为我要的空间不固定,所以不要申请固定的空间大小,这样子该怎么释放指针
c++中怎么delete一个用new申请内存的指针
答案:3 悬赏:70
解决时间 2021-02-21 03:46
- 提问者网友:樱花树下最美的约定
- 2021-02-20 20:49
最佳答案
- 二级知识专家网友:萌萌哒小可爱
- 2021-02-20 22:19
char * p=new char; // 你申请的是一个字节的p指针
*p="hello”; //p指向的内容为“hello”,但是越界了
delete p;//或者delete [] p;//用delete p 释放是正确的,delete [] p是用来释放数组的。
如果申请的空间不确定,则简单的办法是用容器,系统自己动态的申请、释放内存。
如果想自己管理内存,就没有简单的办法了,需要重新申请一块更大的内存,并且将*p的内容与新的内容放进新申请的内存中。delete []p; 就 哦了。。
*p="hello”; //p指向的内容为“hello”,但是越界了
delete p;//或者delete [] p;//用delete p 释放是正确的,delete [] p是用来释放数组的。
如果申请的空间不确定,则简单的办法是用容器,系统自己动态的申请、释放内存。
如果想自己管理内存,就没有简单的办法了,需要重新申请一块更大的内存,并且将*p的内容与新的内容放进新申请的内存中。delete []p; 就 哦了。。
全部回答
- 1楼网友:山鬼偶尔也合群
- 2021-02-21 01:06
char * p=new char[sizeof("hello")/sizeof(char)];
*p="hello”;
delete[] p;
- 2楼网友:花一样艳美的陌生人
- 2021-02-20 23:55
*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*类型的字符串复制是不能用等号的。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |