生手:char *ptr = new char
新手:char *ptr new charchar *ptr new charptr ABCDEcout ptr endldelete ptr[解决办
新手: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;引用: char *ptr = new char; 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;
[解决办法] 引用: 有两个错误,new 开辟的空间还没有释放,就把ptr指向了一段常量区,原本创建的空间找不到了,然后删除ptr指向的常量区,这是不允许的 引用: 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
[解决办法] 引用: Quote: 引用: 你ptr指向的是常量区,后delete如何删除常量区内的数据呢 那这样呢?大神,求指教 char *ptr = new char; strcpy( ptr, "ABCDE" ); cout << ptr << endl; delete ptr; 改成
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; //写错了 改一下
[解决办法] 引用: Quote: 引用: 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