char *赋值给CString,最后怎么出错?

netyou 2006-10-25 05:29:12
我想把char *Buf的值赋给CString Str,以下代码,为什么会出错?应该怎么修改,前提条件一定保留new char(50)分配内存
CString Str;
char *Buf;
Buf=new char(50);
strcpy(Buf,"ddd");
Str=Buf;
delete []Buf;
...全文
326 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangfei0206wl 2006-10-25
  • 打赏
  • 举报
回复
楼主太不小心了,请把Buf=new char(50);这句话改成Buf=new char[50];再试试,还能有问题?
烨炜带火 2006-10-25
  • 打赏
  • 举报
回复
The new operator attempts to dynamically allocate (at run time) one or more objects of type-name. The new operator cannot be used to allocate a function; however, it can be used to allocate a pointer to a function
You programe modified by this:
void CVC005Dlg::OnBnClickedOk()
{
CString Str;
char* Buf ;

Buf = _tcsdup(_T("ddd"));
Str = Buf;
free(Buf);
AfxMessageBox(Str);
}
netyou 2006-10-25
  • 打赏
  • 举报
回复
呵呵,确实可以了,看来我犯了一个低级的错误,把Buf=new char[50]写成Buf=new char(50);感谢以上各位的热心帮助,结贴!
chengwu8 2006-10-25
  • 打赏
  • 举报
回复
CString Str;
char *Buf;
Buf=new char[50]; //()->[]
strcpy(Buf,"ddd");
Str=Buf;
delete []Buf;
huangyangman 2006-10-25
  • 打赏
  • 举报
回复
Buf=new char(50);
->Buf=new char[50];
mynamelj 2006-10-25
  • 打赏
  • 举报
回复
CString str;
char buf[50]; // or char *buf=new char[50];

strcpy(buf, "ddd");
str = buf;
试试这样会不会出错
netyou 2006-10-25
  • 打赏
  • 举报
回复
Str.Format("%s",Buf);
这种方式也试过了,但是还是在delete []Buf;时候出错
王国凡 2006-10-25
  • 打赏
  • 举报
回复
那就试试 Str.Format("%s",Buf);

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧