ATL编写ActiveX中,使用strcpy会出错? char *a[3], *b="sdgsd";strcpy(a[0] ,b); // error here! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 a[0]未初始化,strcpy(a[0] ,b); 当然出错。 事实上是这样的:public: char *sArry[3];在构造函数里面;someCtl(){ sArry[0] = sArry[1] = sArry[2] = ""; }已经分配和初始化了!然后在另一个函数中:STDMETHODIMP someCtl::AddToArry(BSTR bsAdd){ ..... strcpy(a[0] ,b); // error here!} 上述的a[0] 是sArry[0],笔误! 使用了c库,project->setting->c/c++中 去掉 _ATL_MIN_CRT 在构造函数里面;someCtl(){ sArry[0] = sArry[1] = sArry[2] = ""; }已经分配和初始化了!这样也没有分配内存啊。someCtl(){ sArry[0] = new char[256]; sArry[1] = new char[256]; sArry[2] = new char[256]; } 你可以先ATLASSERT(a[0]);ATLASSERT(b);strcpy(a[0] ,b); 这个时候,标准的东西在这里有了不同;你需要这样:someCtl(){ sArry[0] = new char[64]; sArry[1] = new char[64]; sArry[2] = new char[64]; .....}跟superS(super慢)说的一样!需要固定内存.你回去试一试! 如何使用虚列表?网上找的有些看不明白~~ 怎么在vc里面把读出手柄的按键信息通过串行通信发到下位机 关于gdi+ 2008 IP分割_菜鸟问题 请教高手,在客户区绘图后怎样保存为位图文件? 多线程分析消息队列的问题 替换菜单的问题 请教一个DLL调试的问题...... com对象要区分套间模型,为何CoInitializeEx还要指定一次套间模型? 一个邮件提醒的程序该怎样写啊? 我用VC6.0写了一个程序,用的是动态连接库…… 向高手请教 动态库调用的问题
public:
char *sArry[3];在构造函数里面;
someCtl()
{
sArry[0] = sArry[1] = sArry[2] = "";
}
已经分配和初始化了!
然后在另一个函数中:
STDMETHODIMP someCtl::AddToArry(BSTR bsAdd)
{
.....
strcpy(a[0] ,b); // error here!
}
someCtl()
{
sArry[0] = sArry[1] = sArry[2] = "";
}
已经分配和初始化了!这样也没有分配内存啊。someCtl()
{
sArry[0] = new char[256];
sArry[1] = new char[256];
sArry[2] = new char[256];
}
ATLASSERT(b);strcpy(a[0] ,b);
你需要这样:
someCtl()
{
sArry[0] = new char[64];
sArry[1] = new char[64];
sArry[2] = new char[64];
.....
}
跟superS(super慢)说的一样!需要固定内存.你回去试一试!