原先的錯誤**:
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...