void *DATA()
{}
PUCHAR pRecv;
pRecv=(PUCHAR)DATA();delete []pRecv; //到这一步错误0x7c921230
pRecv=NULL;为什么不能DELETE呢
{}
PUCHAR pRecv;
pRecv=(PUCHAR)DATA();delete []pRecv; //到这一步错误0x7c921230
pRecv=NULL;为什么不能DELETE呢
调试欢乐多
delete []pRecv;时,比较两者,看是否一样。
还有,仔细看pRecv的操作,是否有越界
即malloc/free和new/delete 都是成对的
如果new的时候是一个数组,那么释放的时候在指针名前面一定要有[] 即delete [] 指针名
你那段代码中pRecv也是不是用new,所有delete [] pRecv的时候当然就出错了
{
void * pub=NULL;
pub="a";
return pub;
}void CFdadDlg::Recv()
{
PUCHAR pRecv;
if ((pRecv=(PUCHAR)Data())!=NULL)
delete[] pRecv;
pRecv=NULL;}
怎么改不出错
{
void * pub=NULL;
pub="a";
return pub;
} void CFdadDlg::Recv()
{
PUCHAR pRecv;
if ((pRecv=(PUCHAR)Data())!=NULL)
delete[] pRecv;
pRecv=NULL; }
怎么改不出错-----pub:你返回的是常量字符串的地址, 在静态储存区.
它在程序运行期间是不会变的..!delete操作对象是在堆上的..pRecv是个局部变量, 是在栈上的.----锦涛主席能"性骚扰"到 来文斯基 吗...?
hehe
因为只有用new申请的,在堆上分配的空间,才需用delete释放.