64,661
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include <cstring>
using namespace std;
int main (){
char *p;
char a[20]="dsfdsfds";
p=new char[20];
strcpy(p,a);
cout<<endl<<p<<endl;
delete []p;
p=new char;
p='\0';
cout<<p;
return 0;
}
假如有这个程序,如果会出现什么错误,(编译时没出错的)我的猜想是字符赋给一个指针变量,然后最后也没有delete p;还有点问题我想问的是 如果p=char [1];是delete p;还是delete []p;
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
char *p = new char[1];
printf(" ======new p ok!\n");
delete p;
printf(" ======delete p ok!\n");
char *q = new char[1];
printf(" ======new q ok!\n");
delete [] q;
printf(" ======delete q ok!\n");
return 0;
}
//结果
======new p ok!
======delete p ok!
======new q ok!
======delete q ok!
可以说说你的看法,我也只是新手,测试没问题的[/quote][/quote]
看了下, 对于单个字节我感觉应该是可以的!
那上面的是结构体数组肯定旧不一样了!
这里是 char *p = new char [1];
即使delete p 也不会有上面说的内存泄漏问题的, 我感觉![/quote]
童鞋,编程不是靠感觉的。退一步说,如果你非得靠感觉编程,请别鼓励别人也这么干,毁人啊。
the standard says one new is to be paired with one delete, and one new[] with one delete[],anything else is undefined. period.[/quote]
多谢大神回复!学习了,我会更一步改进自己的编程想法!
因为也是新手,好多东西懂的皮毛!多谢啦啦!!
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
char *p = new char[1];
printf(" ======new p ok!\n");
delete p;
printf(" ======delete p ok!\n");
char *q = new char[1];
printf(" ======new q ok!\n");
delete [] q;
printf(" ======delete q ok!\n");
return 0;
}
//结果
======new p ok!
======delete p ok!
======new q ok!
======delete q ok!
可以说说你的看法,我也只是新手,测试没问题的[/quote][/quote]
看了下, 对于单个字节我感觉应该是可以的!
那上面的是结构体数组肯定旧不一样了!
这里是 char *p = new char [1];
即使delete p 也不会有上面说的内存泄漏问题的, 我感觉![/quote]
童鞋,编程不是靠感觉的。退一步说,如果你非得靠感觉编程,请别鼓励别人也这么干,毁人啊。
the standard says one new is to be paired with one delete, and one new[] with one delete[],anything else is undefined. period.
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
char *p = new char[1];
printf(" ======new p ok!\n");
delete p;
printf(" ======delete p ok!\n");
char *q = new char[1];
printf(" ======new q ok!\n");
delete [] q;
printf(" ======delete q ok!\n");
return 0;
}
//结果
======new p ok!
======delete p ok!
======new q ok!
======delete q ok!
可以说说你的看法,我也只是新手,测试没问题的[/quote][/quote]
看了下, 对于单个字节我感觉应该是可以的!
那上面的是结构体数组肯定旧不一样了!
这里是 char *p = new char [1];
即使delete p 也不会有上面说的内存泄漏问题的, 我感觉!
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
char *p = new char[1];
printf(" ======new p ok!\n");
delete p;
printf(" ======delete p ok!\n");
char *q = new char[1];
printf(" ======new q ok!\n");
delete [] q;
printf(" ======delete q ok!\n");
return 0;
}
//结果
======new p ok!
======delete p ok!
======new q ok!
======delete q ok!
可以说说你的看法,我也只是新手,测试没问题的[/quote]
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
char *p = new char[1];
printf(" ======new p ok!\n");
delete p;
printf(" ======delete p ok!\n");
char *q = new char[1];
printf(" ======new q ok!\n");
delete [] q;
printf(" ======delete q ok!\n");
return 0;
}
//结果
======new p ok!
======delete p ok!
======new q ok!
======delete q ok!
可以说说你的看法,我也只是新手,测试没问题的