在EXE程序中调用DLL文件后出现_CrtIsValidHeapPointer(pUserData)问题的解决方法
2011-02-10 23:34
1091 查看
在编写的一个dll文件中进行了内存分配,然后在exe程序中调用该函数之后出现了_CrtIsValidHeapPointer(pUserData)提示,进而死机,dll中的代码如下:
在主程序中如下调用:
这是因为dll拥有一个独立于应用程序(调用它的exe)的本地堆,调用过后dll占用的空间即被释放,先前new的内存地址即无效,那么解决此问题时要将dll文件中动态申请内存的时候使用HeapCreate函数而不能使用new操作符,具体说明详见MSDN,以下网址可供参考:
http://www.codeguru.com/forum/showthread.php?t=220822
extenr "C" _declspec(dllexport) dobule* DllFunctionName(int iCount) { return new double[iCount]; }
在主程序中如下调用:
typedef double* (*MYFUNCTION)(int); HINSTANCE hInstance; MYFUNCTION func; double *pArray; int i; hInstance = ::LoadLibrary("dllname.dll"); func = (MYFUNCTION)GetProcAddress(hInstance, "DllFunctionName"); //获取函数的地址 pArray = (*func)(5); //调用函数 for (i = 0; i < 5; i++) { pArray[i] = 0.0; //运行至此行出错 } ::FreeLibrary();
这是因为dll拥有一个独立于应用程序(调用它的exe)的本地堆,调用过后dll占用的空间即被释放,先前new的内存地址即无效,那么解决此问题时要将dll文件中动态申请内存的时候使用HeapCreate函数而不能使用new操作符,具体说明详见MSDN,以下网址可供参考:
http://www.codeguru.com/forum/showthread.php?t=220822
相关文章推荐
- VS调试程序_ASSERTE(_CrtIsValidHeapPointer(pUserData))崩溃的原因以及解决方法
- 【vc++ 2010问题】使用visual c++/studio 2010编译程序后,出现_CrtIsValidHeapPointer(pUserData)错误
- _CrtIsValidHeapPointer(pUserData) 问题解决
- 运行VS2013编译成功后出现:无法启动程序“.exe” 系统找不到指定文件的问题的解决方法
- 在WIN10系统下运行VS2013编译成功后出现:无法启动程序“.exe” 系统找不到指定文件的问题的解决方法
- vs调试报错:“_ASSERTE(_CrtIsValidHeapPointer(pUserData)) ”的问题解决
- Expression: _CrtIsValidHeapPointer(pUserData) 问题!
- java用jni调用dll动态库出现Can't find dependent libraries问题的解决方法
- 64位进程调用32位dll的解决方法 / 程序64位化带来的问题和思考
- 64位进程调用32位dll的解决方法 / 程序64位化带来的问题和思考
- web调用cab不能注册dll、不能运行exe文件问题解决
- C++/CLI程序启动时_CrtIsValidHeapPointer(pUserData)错误
- C++/CLI程序启动时_CrtIsValidHeapPointer(pUserData)错误
- C#调用exe文件,IIS发布后无法掉用本地exe程序的解决方法
- _CrtIsValidHeapPointer(pUserData)奇怪的问题?
- 【WinCE】WinCE程序开发中出现“无法找到PInvoke DLL"Kernel32.dll"”问题的一种解决方法
- _CtrIsValidHeapPointer(pUserData) 问题的解决!
- C#调用exe文件,IIS发布后无法掉用本地exe程序的解决方法
- C++/CLI程序启动时_CrtIsValidHeapPointer(pUserData)错误
- 以不同用户身份运行程序,/savecred只需要输入一次密码(GetTokenByName取得EXPLORER.EXE的令牌,然后调用CreateProcessAsUser,而且使用LoadUserProfile解决另存文件的问题)good