我在函数中定义:
LPTSTR lpstrName = new char;
_bstr_t p_Sql;
p_Sql = e_Recordset->GetCollect("fcode").bstrVal;
lpstrName = p_Sql;
SetWindowText(hCode, lpstrName);
p_Sql = e_Recordset->GetCollect("fName").bstrVal;
lpstrName = p_Sql;
SetWindowText(hName, lpstrName);
delete lpstrName; //这里就错了,是为什么???
如果不delete会不会浪费内存,书上不是说做了‘new’操作后,要用‘delete’释放吗?
LPTSTR lpstrName = new char;
_bstr_t p_Sql;
p_Sql = e_Recordset->GetCollect("fcode").bstrVal;
lpstrName = p_Sql;
SetWindowText(hCode, lpstrName);
p_Sql = e_Recordset->GetCollect("fName").bstrVal;
lpstrName = p_Sql;
SetWindowText(hName, lpstrName);
delete lpstrName; //这里就错了,是为什么???
如果不delete会不会浪费内存,书上不是说做了‘new’操作后,要用‘delete’释放吗?
解决方案 »
- 关于IPCP完成端口WSARecv和WSASend函数的问题
- 一个很奇怪BUG,对话框显示乱套了
- 关于send传输数据组织问题?
- 一个消息能否在CMainFrame和CView之间同时响应?
- c++制作可拖动图形化工具
- 如何将BYTE型转换为int型
- 如何只刷新(UpdateData)指定ID号的控件的数据显示?ID号与窗口句柄的异同?
- 开发ATL COM的时候,接口方法的参数是怎么规定的,怎么用地址也出错,用结构也出错啊~~~??
- 一个线程创建的问题
- 如何在CFormView中显示CScrollBar
- 请问VB中有Instr和Mid函数是取字符串的。在VC里面是什么函数呢?
- 50分求install sheild 安装文件
你这里LPTSTR lpstrName = new char;分配了内存
可是在lpstrName = p_Sql;你又对这个指针赋值,这样在最后delete当然出错啦
把lpstrName = p_Sql;这句改为如下*lpstrName = p_Sql;不要去改变lpstrName的地址,不然这样的话会出现内存遗漏。最好把lpstrName的声明改为如下:char* const lpstrName = new char;这样就可以避免意外的修改了lpstrName的地址
感谢‘guoxiny(狼)’,你说的‘char* const lpstrName ’我一下反映过来了。以前老是遇到这样的问题!看来我对C++还没做到灵活运用。真要好好学习才是