gpt4 book ai didi

c++ - 内存溢出?

转载 作者:太空狗 更新时间:2023-10-29 23:07:54 25 4
gpt4 key购买 nike

我有一个 c++ 方法(用于 java、jni)如下所示,当我从 java 中重复调用它(每 150 毫秒)时,大约 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++ - 内存溢出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11257146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com