0

下面是我的代码

int _tmain(int argc, _TCHAR* argv[])
{
    CComSafeArray<long> sa;
    vector<long> vec;
    for (int i = 0; i<3 ; i++   )
    {
        func(&(sa.m_psa));
        long* pVals;

        HRESULT hr = SafeArrayAccessData(sa, (void**)&pVals);
        if (SUCCEEDED(hr))
        {
            long lowerBound, upperBound;  // get array bounds
            SafeArrayGetLBound(sa, 1 , &lowerBound);
            SafeArrayGetUBound(sa, 1, &upperBound);

            long cnt_elements = upperBound - lowerBound + 1; 
            for (int i = 0; i < cnt_elements; ++i)  // iterate through returned values
            {                              
                 vec.push_back(pVals[i]);   
            }       
        }

    // When no longer need "raw".
        SafeArrayUnaccessData(sa); // tried sa.m_psa too
    }
    return 0;
}

这里 SafeArrayUnaccessData(sa) 会抛出 debug assertion failure 。

当我注释掉 SafeArrayUnaccessData(sa) 程序工作正常

在此处输入图像描述

4

0 回答 0