程序里new一个字符串数组,dll中赋值,程序里delete然后报错,那里违规了?

MrSoda 2015-06-12 03:40:02
char* pszParam = new char[1024*10];

if( LoadAuthLib() )
{
//m_pAuthLib 是一个libWrapper对象
m_pAuthLib = new CAuthWrapper( hAuthLib );
m_pAuthLib->SetWebsvcIP( "192.168.122.36:8080" );
//在dll中有一个strcpy_s这样的操作,给pszParam赋值
m_pAuthLib->GetSysParam( "admin", "password", "", &pszParam );
}

TCHAR* pszWText = new TCHAR[ strlen(pszParam)*2 ];
mbstowcs( pszWText, pszParam, strlen(pszParam)*2 );
CString strInfo = L"";
strInfo.Format( L"%s", pszWText );

SetDlgItemText( IDC_EDIT2, strInfo );

//这句报错了
delete[] pszParam;
delete[] pszWText;


GetSysParam( "admin", "password", "", &pszParam )
这个函数原型是:
int fpGetSysParam( const char* EndPoint, const char* Password, const char* sha , char** ppszParam );
...全文
270 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
MrSoda 2015-06-12
  • 打赏
  • 举报
回复

题主的公司都是做JAVA的
就我一个C++,搞了这么久你一句话就搞定了
没有同事不能活了
谢谢谢谢谢谢谢谢谢谢谢谢谢谢

初始化变量是个好习惯
zgl7903 2015-06-12
  • 打赏
  • 举报
回复
可能有越界操作 char* pszParam = new char[1024*10]; pszParam[0] = 0; //先清零
MrSoda 2015-06-12
  • 打赏
  • 举报
回复
补充一下 报错是这个 _CrtIsValidHeapPointer函数 提示是int _CrtIsValidHeapPointer() - verify pointer is from 'local' heap

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧