新手:char *ptr = new char;
char *ptr = new char;
ptr = "ABCDE";
cout << ptr << endl;
delete ptr;
[解决办法]
应该这样写才对:
char* ptr = new char[10];
strcpy(ptr, "ABCDE");
cout << ptr << endl;
delete[] ptr;
[解决办法]
你ptr指向的是常量区,后delete如何删除常量区内的数据呢
[解决办法]
有两个错误,new 开辟的空间还没有释放,就把ptr指向了一段常量区,原本创建的空间找不到了,然后删除ptr指向的常量区,这是不允许的
[解决办法]
char *ptr = new char; //ptr指向一个申请了一个字节的内存
ptr = "ABCDE"; //ptr又指向常量字符串为“ABCDE”的内存
cout << ptr << endl; //结论:你申请的内存根本没用。
delete ptr;
/***************************************************/
//你想表达的意思应该是这样:
char* pStr = new char[6];
strcpy(pStr,"ABCDE");
pStr[5] = '\0';
cout << pStr << endl;
if (NULL != pStr)
{
delete pStr;
pStr = NULL;
}
[解决办法]
char *ptr = new char; //内存内存地址了
ptr = "ABCDE"; //这里又是把常量字符串的地址赋值给ptr了!内存泄漏的
两个选择一个
1 char *ptr = NULL;
ptr = "ABCDE";
2 char *ptr = new char[10];
strcpy(ptr, "ABCDE");
//后面再delete []ptr;
[解决办法]
study
[解决办法]
改成
char *ptr = new char[6];
strcpy( ptr, "ABCDE" );
cout << ptr << endl;
delete[] ptr;
试试
[解决办法]
char *ptr = new char; //ptr指向一个申请了一个字节的内存
ptr = "ABCDE"; //ptr又指向常量字符串为“ABCDE”的内存
cout << ptr << endl; //结论:你申请的内存根本没用。
delete ptr;
/***************************************************/
//你想表达的意思应该是这样:
char* pStr = new char[6];
strcpy(pStr,"ABCDE");
pStr[5] = '\0';
cout << pStr << endl;
if (NULL != pStr)
{
delete pStr;
pStr = NULL;
}
代码不是写好了?
还这样?那样?
[解决办法]
delete []pStr; //写错了 改一下
[解决办法]
delete []pStr; //写错了 改一下
好吧,我就是想问,new char 后 ,将一个字符串存放在里面(字符串的长度不确定),怎么delete.
new char[n] 这里怎么会不确定呢,这是你要申请多大的内存,char是一个字节,1*n即你要申请的内存大小。
delete的话,如果你是char* p = new char;就 delete p;就行。如果char *p = new char[3];就delete[] p;
这些是基础呢...
[解决办法]
char *ptr1 = new char
char *ptr2 = new char[10]
虽然ptr1和ptr2都是相同类型,语法上可以用字符串赋值,但是ptr1只指向1个字符,放不下更多的字符
而ptr2指向10个char的字符数组,所以能够存放你的ABCDE