一个关于DLL中分配内存同时在DLL中释放出错的问题
问题大致是这样的,在我的DLL中,有两个函数:
Export void A()
{
int i* = new int[BUFFER];
//省略部分代码赋值和计算的代码
delete[] i;
}
Export void B()
{
int i* = new int[BUFFER];
//省略部分代码赋值和计算的代码
delete[] i;
}
两个函数中唯一的区别只有省略的那部分执行的数学计算不同,在主程序中,调用函数A()是没有_CrtIsValidHeapPointer这个错误的,但是函数B()却会提示_CrtIsValidHeapPointer相关的错误,我在网上搜了下,大致的意思都是说DLL和EXE彼此的堆管理器是相互独立的,可是如果是这样,不是应该函数A()也会报错么?为何只有B报错,而A不会?求教所有的可能,谢谢了
Export void A()
{
int i* = new int[BUFFER];
//省略部分代码赋值和计算的代码
delete[] i;
}
Export void B()
{
int i* = new int[BUFFER];
//省略部分代码赋值和计算的代码
delete[] i;
}
两个函数中唯一的区别只有省略的那部分执行的数学计算不同,在主程序中,调用函数A()是没有_CrtIsValidHeapPointer这个错误的,但是函数B()却会提示_CrtIsValidHeapPointer相关的错误,我在网上搜了下,大致的意思都是说DLL和EXE彼此的堆管理器是相互独立的,可是如果是这样,不是应该函数A()也会报错么?为何只有B报错,而A不会?求教所有的可能,谢谢了
...全文
相关推荐
简单的动态调用dll及 dll的释放
"这篇文章主要介绍了如何在C#中进行简单的动态调用DLL以及释放DLL的技巧,其中涉及到了AppDomain的应用。"在.NET框架中,动态调用DLL是一种常见的编程需求,它允许程序在运行时加载
delphi 调用DLL 及释放例子
确保正确地管理DLL的生命周期非常重要,避免内存泄漏和程序异常。在实践中,可能还需要处理错误,比如DLL未找到、函数找不到等问题。
C# winform 运行前释放令一个文件(或DLL)
标题中的“C# WinForm 运行前释放令一个文件(或DLL)”指的就是这种技术。描述中提到的“直接生成一个exe,运行exe才释放需要的dll文件”是实现这一策略的一种方法。
FreeMem释放内存的DLL,效果明显
特别是对于那些占用内存资源较多的应用程序,如何释放那些不再被使用的内存成为一大挑战。"FreeMem释放内存的DLL"正是为解决这一问题而生。
LabVIEW调用dll控制释放内存.rar
**资源释放**:对于非托管资源,如打开的文件或设备句柄,确保在不再使用时释放它们。这可能需要DLL提供一个专门的释放资源的函数。


