问个new/delete的问题

3m2u 3m2u 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
为了启动管理多个不同的线程,我定义了一个结构
{
HANDLE hThread;
LPARAM lParam ;
...
}
lParam是线程需要的数据,有个线程我要传2个字符串进去,用了以下方法:
CString *ptr = new CString[2];
ptr[1] = str1;
ptr[2] = str2;
para.lParam = (LPARAM) ptr;
当希望传入别的数据的时候new其它的类型,在线程内去解析lParam
线程获取/使用这些数据是没有问题的
在线程结束的时候就有问题了,因为需要delete lParam对应的内容
而实际上lParam不一定是什么类型,也许是CString* 也许是 MyStruct*
直接delete [] (char*)lParam 会报错。
如果在开始的时候都统一用char*来申请内存,像下面这样:
char * buf = new char[sizeof(CString)*2];
char * ptr = (CString*)buf;
ptr[1] = str1;
ptr[2] = str2;
这样赋值的时候又会报错。

怎么解决这样的问题比较好呢?
...全文

相关推荐

评论 26
收藏 已收藏
分享
返回顶部
3m2u
VC/MFC 16,550 成员 421,606 内容