delete 出错. pp = new char 只分配一个字节,你说够用吗?改成pp = new char[num],num指定 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 strcpy()要求事先给pp分配足够的空间,pp = new char只是给pp分配了一个字符的空间,当执行完strcpy后,你的内存分配已经出错了。改为pp = new char[10]; typedef struct d { char * g; d() { g=new char [100]; } ~d() { delete g; } } dd; dd *tt=new dd[1]; strcpy(tt[0].g,"dsfg"); delete []tt;我这样可不可 完全释放内存,连 tt[0].g 也 释放 把 delete g 写在 ~g(){} 中好,还是 把 delete []tt[0].g;写在最后的 delete []tt;前面好。 asdmusic8这个问题我来回答你所需要的空间是要向“堆栈空间”申请的。 {heap)//////////////////////char *pp;int arrSize;cin>>arrSize;pp = new char[arrSize];assert(pp);strcpy(pp,"asdf"); //do somethingdelete []pp;这样就可以,当然用同样方法可以构造动态数组。 (字符串不就是个数组嘛)给分,给分! char *pp; pp=new char; strcpy(pp,"asdf"); delete pp;//因为我是new 的,所以我加上了delete ,出错。 对不起,前面按错了 char *pp; pp=new char[strlen("asdf")]; strcpy(pp,"asdf"); delete pp;关键是要分配足够的字符数组空间 又错了 char *pp; pp=new char[strlen("asdf")+1]; strcpy(pp,"asdf"); delete[] pp; typedef struct d{ char * g; d(){ g=new char [100];}~d(){ delete g;}} dd;dd *tt=new dd[1]; strcpy(tt[0].g,"dsfg"); delete []tt;我这样可不可 完全释放内存,连 tt[0].g 也 释放 把 delete g 写在 ~g(){} 中好,还是 把 delete []tt[0].g;写在最后的 delete []tt;前面好。 如何使右键菜单中的图标区域宽一些 MFC DLL 共享节问题 关于CFrameWnd和C***View的菜鸟问题 链接问题 升星散分:) 初学者的指针问题.. 公司要我一个星期写出程序设计书 一个不是很难的问题,为什么我都给300分了还没有人回答????????????????????????? 以前的文章都哪里去? 线程的生命周期 有谁知道怎样从DLL 文件(用VC写的)中取出函数清单的,包括具体参数定义 怎么在视图中获取文档的数据?????视图是继承View类???
{
char * g;
d()
{
g=new char [100];
}
~d()
{
delete g;
} } dd; dd *tt=new dd[1];
strcpy(tt[0].g,"dsfg");
delete []tt;
我这样可不可 完全释放内存,连 tt[0].g 也 释放
还是 把 delete []tt[0].g;
写在最后的 delete []tt;前面好。
这个问题我来回答
你所需要的空间是要向“堆栈空间”申请的。 {heap)
//////////////////////
char *pp;
int arrSize;
cin>>arrSize;
pp = new char[arrSize];
assert(pp);
strcpy(pp,"asdf");
//do something
delete []pp;这样就可以,当然用同样方法可以构造动态数组。 (字符串不就是个数组嘛)给分,给分!
pp=new char;
strcpy(pp,"asdf");
delete pp;//因为我是new 的,所以我加上了delete ,出错。
pp=new char[strlen("asdf")];
strcpy(pp,"asdf");
delete pp;
关键是要分配足够的字符数组空间
char *pp;
pp=new char[strlen("asdf")+1];
strcpy(pp,"asdf");
delete[] pp;
{
char * g;
d()
{
g=new char [100];
}
~d()
{
delete g;
}} dd;dd *tt=new dd[1];
strcpy(tt[0].g,"dsfg"); delete []tt;
我这样可不可 完全释放内存,连 tt[0].g 也 释放 把 delete g 写在 ~g(){} 中好,
还是 把 delete []tt[0].g;
写在最后的 delete []tt;前面好。