问个new/delete的问题
3m2u 2011-07-22 12:31:12 为了启动管理多个不同的线程,我定义了一个结构
{
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;
这样赋值的时候又会报错。
怎么解决这样的问题比较好呢?