内存溢出?
Memory overflow?
我有一个C ++方法(对于Java,JNI),就像下面一样,当我从Java重复调用它(每150ms),大约在4小时后。内存溢出....
JNIEXPORT jint JNICALL Java_nc_mes_pub_hardware_PCI1761_readChanel(JNIEnv *, jobject, jint channel){
HRESULT hr ;
CLSID clsid;
hr = CLSIDFromProgID(L"AdvDIO.AdvDIOCtrl", &clsid);
CComPtr<IAdvDIO> advlib;
hr = advlib.CoCreateInstance(clsid);
if ( SUCCEEDED( hr ) )
{
advlib->DeviceNumber = 0;
if(advlib->DeviceNumber < 0){
return -100;
}
int i =advlib->ReadDiChannel( channel );
// advlib.Release();
advlib = NULL;
return i;
}
else
{
return -1;
}
}
问题是这行代码:
advlib = NULL;
advlib
对象需要正确的值才能完成其工作。通过销毁其值并将其设置为 NULL,它无法再释放正确的实例。
取消注释advlib.Release()
可能会使其正常工作。但正确的解决方法是删除advlib = NULL;
并允许CComPtr
完成其工作。
相关文章:
- 将字符串存储在c++中的稳定内存中
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- Win32编译器选项和内存分配
- 当vector是tje全局变量时,c++中vector的内存管理
- gsl_complex导致内存溢出
- 哪个内存被溢出
- 缓冲区溢出到其他 exe 的内存中?还是从远程桌面程序到 csrss.exe?
- 读取虚拟内存时C++缓冲区溢出
- 内存块类在溢出后给出一个数字,为什么以及如何
- 内存将被代码中的溢出覆盖
- 如何为大型项目制作一个简单的工具来检测Linux中的双倍空闲或内存溢出
- 内存溢出?
- 内存集内存溢出
- 内存溢出的Dtrace
- SSE-C++内存溢出
- 内存溢出?std:: badalloc
- 如何避免c++中由于内存溢出而导致的错误消息
- 获得由内存泄漏引起的内存溢出,应用程序继续运行和分配
- 在试图确定是在堆栈还是堆上分配内存时,没有发生堆栈溢出
- 溢出或内存错误c++