記一次geos記憶體申請釋放的崩潰查錯

2021-06-27 09:15:10 字數 1563 閱讀 4149

原先的錯誤**:

const geometryfactory *pgeomfactory = geometryfactory::getdefaultinstance();

const coordinatesequencefactory *pcoordfactory = coordinatearraysequencefactory::instance();

// 構造

typedef mappolygons;

polygons plygns;

for (int ival=0; ivalvectorvecringint;

for (int ipart=0; ipartnparts; ++ipart)

polygon *ppolygon = pgeomfactory->createpolygon(pringext,&vecringint);

plygns.insert(make_pair(ival,ppolygon));

shpdestroyobject(pobj);

}// 釋放

for (polygons::iterator iter=plygns.begin(); iter!=plygns.end(); ++iter)

plygns.clear();

修改後的**

const geometryfactory *pgeomfactory = geometryfactory::getdefaultinstance();

const coordinatesequencefactory *pcoordfactory = coordinatearraysequencefactory::instance();

// 構造

typedef mappolygons;

polygons plygns;

for (int ival=0; ivalvector*pringint = new vector;

for (int ipart=0; ipartnparts; ++ipart)

polygon *ppolygon = pgeomfactory->createpolygon(pringext,pringint);

plygns.insert(make_pair(ival,ppolygon));

shpdestroyobject(pobj);

}// 釋放

for (polygons::iterator iter=plygns.begin(); iter!=plygns.end(); ++iter)

plygns.clear();

問題在於,使用createpolygon函式非const的指標引數過載版本為所有權轉移,內環的vector記得也是指標,而我構造polygon內環的vector出了作用域就灰飛煙滅了,於是就掛了

ps:這裡的vector是在我的程式申請的記憶體,卻在geos模組釋放,表示有點強迫,有空再找找geos有沒有由它申請vector的方法,實在不行就先createemptypolygon再addring吧,或者呼叫拷貝構造的createpolygon犧牲點效率。。。

python迴圈一次釋放記憶體 迴圈期間釋放記憶體

我的 記憶體有問題。我的解析器可以這樣總結 coding utf 8 usr bin env python import sys import json from collections import defaultdict class myparseriter object def parse l...

記一次goto記憶體洩漏

學習c語言時一直被告誡盡量不要使用goto語句,所以對其了解很少。在一次專案使用時由於之前的程式已經使用了goto,按照自己的理解去處理,結果導致記憶體未釋放。例子如下 include int main return 0 error printf aaaaa n printf 11111.n ret...

記一次記憶體溢位(PermGen Space)的坑

環境 jdk1.6 使用技術 urlclassloader 事件描述 使用urlclassloader類載入器,實現熱部署。定時任務載入jar包,任務執行300次左右就會報 permgen space 分析過程 1.檢視記憶體使用情況 jmap heap pid jdk8以後檢視元空間大小 jsta...