在dll中new一块内存,然后用SendMessage将其地址发到一个窗体上面,在窗体接受了消息并处理完成以后用delete来删除这块内存,delete的时候就出错了。
dll:
char* pCHar = new char[100];
......
::SendMessage(
hWnd,
WM_USER + 1120,
100, //size of the buffer;
(LONG)pCHar);in Dialog;
GetBuffer(WPARAM wParam, LPARAM lParam){
.....//处理数据;
char*pChar = lParam;
delete pChar;//在这里出错了提示:user breakpoint called from code at 0x7c91230
pChar = NULL;
}
这是怎么回事啊?谢谢了,
dll:
char* pCHar = new char[100];
......
::SendMessage(
hWnd,
WM_USER + 1120,
100, //size of the buffer;
(LONG)pCHar);in Dialog;
GetBuffer(WPARAM wParam, LPARAM lParam){
.....//处理数据;
char*pChar = lParam;
delete pChar;//在这里出错了提示:user breakpoint called from code at 0x7c91230
pChar = NULL;
}
这是怎么回事啊?谢谢了,
解决方案 »
- 急求VC++ 中http client上传部分
- activex 安装程序的制作 急!
- 在继承CAxDialogImpl这个类的窗口里创建和添加tab页怎么做啊?
- 高分求助:怎样对一个目录下面的文本文件里的关键字进行搜索/
- 我的分被加错地方了
- 期待MFC DLL高手
- 哪里可以下载到 for XP 的 DDK ?
- 给大家个好东西。最新版BoundsChecker 6.6,但谁哪里有6.6的licence发给我一份。刚才发的帖子有问题
- 请高手指导一下,下面编译是什么错误。谢谢!
- 拉拉,谢谢你了,我很崇拜你啊,你有没有QQ号?
- 求助:怎样直接加载图表文件,而不是将文件转到resource view中呢?
- c/c++/vc经典电子书下载,绝对的精品...
可以让DLL同时提供申请和释放内存的函数供客户程序调用
DLL不能释放客户程序申请的内容
应该发指针的指针ppChar(=&pCHar),然后删除掉*ppChar,并置空*ppChar=NULL
char* pCHar = new char[100];
......
::SendMessage(
hWnd,
WM_USER + 1120,
100, //size of the buffer;
(LONG)pCHar);in Dialog;
GetBuffer(WPARAM wParam, LPARAM lParam){
.....//处理数据;
char*pChar = lParam;
delete pChar;//在这里出错了提示:user breakpoint called from code at 0x7c91230
pChar = NULL;
}你的程序不需要这么写的吧?
dll:
string text;
.....
SendMessage(..., (LPARAM) text.c_str());in Dialog
GetBuffer(...)
这里不需要对哪个指针的删除你调用SendMessage 就如同call GetBuffer差不多,如果在一个线程里
如果不在的话,那就是用sendmessagenotify or postmessage.... 那就加一个thread safe的queue,然后在你的getbuffer将处理过的数据从queue删除掉你非要这样的话,按照 oyljerry(【勇敢的心】→ ㊣Winterize√㊣) 所说的做
dll提供申请和释放的两个函数