[求助]类的new操作,delete操作出错 对一个类实例化:myclass* pclass = new myclass();我将这个类的指针传到了一个线程里去操作,操作结束想delete掉:delete pclass;程序就在这完蛋了帮帮忙,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 delete pclass;这句话是放在哪里的? delete pclass放在线程结束前-------------------------myclass* pclass = new myclass(); CreateThread(workthread);UINT workthread(LPVOID lpParam){ myclass* pclass = (myclass*)lpParam; delete pclass; <------(就是在这里del的) return 0;} 不是当前线程new的就不要用delete,应该在new的那个线程去做 用delete 之前 最好先 if(pclass!=NULL){delete pclass; pclass=NULL;}写代码严谨点 还是又好处的。仅供参考。 to xkyx_cn: 我是在用到异步socket的那个类时遇到这个问题的,我必须在接受连接前new一个sock类对象,然后转入一个线程完成通信,你有什么好办法处理这种情况?谢谢 你delete的是pParam对应的内存这个不是你new的当然要死了 支持9楼的说法,通过指针传资源很容易出错,因为指针也是一种数据类型,在传递时也有临时空间。如:int *b;f(int *a){a=new int[10];}//函数调用企图通过函数返回空间f(b);实际上,是将指针b空间的值复制给了临时指针空间a中,在函数退出后,并没有能够将空间返回。所以,需要这样传,传递指向指针的指针int **b;f(int **a){*a=int[10];}//函数调用获取空间f(b);//因为在函数中直接修改了指针型数据b的空间,所以可以指向相同的位置 不好意思,我又琢磨了一下,好像不是new delete原因引起的。 继续这个帖子问:我在动态库里new出来一块内存,然后把这块内存的地址发给上层的应用程序,问:为什么我在上面的应用程序里delete就崩溃 :我在动态库里new出来一块内存,然后把这块内存的地址发给上层的应用程序,问:为什么我在上面的应用程序里delete就崩溃 hook启动exe的行为 MFC复制文件的问题 问一下这种获得窗口宽度的方法? VC中右键的二级菜单怎么实现? 关于邮件客户端的问题 ListCtrl排序,我已经完成,但是原理是什么呢? [ 求救] 有什么方法可以高效的处理IDirect3DSurface9内的数据,为什么LockRect得到的指针处理起来会超级慢 如何获取当前连接到数据库的用户数量 ado 怎么读取foxpro 类型数据啊 SDK 的一个小问题. 再发Queue <T> class泛型类问题 诚心请教对话框体上显示图标的方法?
delete pclass;
这句话是放在哪里的?
放在线程结束前
-------------------------
myclass* pclass = new myclass();
CreateThread(workthread);UINT workthread(LPVOID lpParam)
{
myclass* pclass = (myclass*)lpParam; delete pclass; <------(就是在这里del的)
return 0;
}
写代码严谨点 还是又好处的。仅供参考。
这个不是你new的
当然要死了
如:
int *b;
f(int *a)
{
a=new int[10];
}//函数调用企图通过函数返回空间
f(b);
实际上,是将指针b空间的值复制给了临时指针空间a中,在函数退出后,并没有能够将空间返回。
所以,需要这样传,传递指向指针的指针
int **b;
f(int **a)
{
*a=int[10];
}
//函数调用获取空间
f(b);//因为在函数中直接修改了指针型数据b的空间,所以可以指向相同的位置