最近发现程序执行完后,有严重的内存泄漏:利用OCIObjectNew 申请时占用了50M的内存,但是利用OCIObjectFree后内存没什么反应,想问下到底哪错了
由于内外网机子交互问题,不能贴代码,大致的如下:typedef struct {OCI Array * geoArray;}geometry_struct;
 geometry_struct m_GeoInfo_Array[65534];----------------------------------------------------
m_eleInfo_tdo = DB_get_tdo(SDO_ELEM_INFO_ARRAY)----------------------------------------------------
for(int i=0;i<65534;i++)
{
OCIOBjectNew(envhp,errhp,svchp,OCI_TYPECODE_VARRAY,m_eleInfo_tdom,(dvoid*)NULL,OCI_DURATION_SESSION,FALSE,(dvoid**)&m_GeoInfo_Array[i].geoArray) ;
}
----------------------------------------------------
for(int i=0;i<65534;i++)
{
OCIObjectFree(envhp,errhp,(dvoid*)(m_GeoInfo_Array[i].geoArray),(ub2)OCI_OBJECTFREE_FORCE);
}-------------------------------------------------------------------------------

解决方案 »

  1.   

    很奇怪的现象:OCIObjectNew同时OCIObjectFree内存没有占用。但是,集体new完后再集体Free中间什么也不做,内存还是没有释放,这两者有什么区别呢,到底应该在哪找问题啊,都快纠结一天了。who  can help me
    for(int i=0;i<65534;i++)
    {
    OCIOBjectNew(envhp,errhp,svchp,OCI_TYPECODE_VARRAY,m_eleInfo_tdom,(dvoid*)NULL,OCI_DURATION_SESSION,FALSE,(dvoid**)&m_GeoInfo_Array[i].geoArray) ;
    OCIObjectFree(envhp,errhp,(dvoid*)(m_GeoInfo_Array[i].geoArray),(ub2)OCI_OBJECTFREE_FORCE);}for(int i=0;i<65534;i++)
    {
    OCIOBjectNew(envhp,errhp,svchp,OCI_TYPECODE_VARRAY,m_eleInfo_tdom,(dvoid*)NULL,OCI_DURATION_SESSION,FALSE,(dvoid**)&m_GeoInfo_Array[i].geoArray) ;
    }
    for(int i=0;i<65534;i++)
    {
    OCIObjectFree(envhp,errhp,(dvoid*)(m_GeoInfo_Array[i].geoArray),(ub2)OCI_OBJECTFREE_FORCE);
    }