Top/article/Do-not-skip-freeing-data-when-using-tri-mesh-in-ODE
English | Japanese
English | Japanese

Menu

  • Top
  • Akihiko Yamaguchi 山口 明彦
  • Project プロジェクト
  • Text テキスト
  • Recent articles 最近の記事
  • Articles 記事一覧 (a to z)
  • Search 検索

Tags タグ †

  • [c++][bash][python][latex][php]
  • [linux][windows][mac][android]
  • [math][algorithm][idea][trick]
  • [liboctave][opencv][git][ros]
  • [setting][bug][general]
↑

Recent articles 最近の記事 †

2019-07-02
  • article/Display-Unix-Time
  • article/Synchronize-Linux-Time-to-Remote
2018-09-27
  • article/python-multimode-singleton
2018-09-02
  • article/rosinstall-git-default-remote
2017-07-28
  • article/SubMenu
2017-03-05
  • article/Import-a-different-version-of-OpenCV-in-Python
2015-08-17
  • article/DRC-finals-2015
2015-01-05
  • article/Upgrade-Android-to-Lollipop
2015-01-01
  • article/Kernel-panic-of-Linux-when-using-Xtion
  • article/Do-not-skip-freeing-data-when-using-tri-mesh-in-ODE
Access: 1/2688 - Admin

Don't skip freeing data when using tri-mesh in ODE

ODE で tri-mesh を使うときはデータの解放を忘れずに

[c++]
2013-11-21

ODE (Open Dynamics Engine) で tri-mesh (三角形メッシュ) を使うとき,dGeomTriMeshDataCreate で確保したデータを,dGeomTriMeshDataDestroy で破棄するのを忘れてはならない.破棄しなければ,メモリリークの原因となる(特に,シミュレーションのリセットを何度も繰り返す場合).

例えば,以下のようなコードで tri-mesh を作成したとする. source from ode/demo/demo_trimesh.cpp:

dTriMeshDataID Data = dGeomTriMeshDataCreate();
dGeomTriMeshDataBuildSingle(Data, Vertices[0], 3 * sizeof(float), VertexCount, &Indices[0], IndexCount, 3 * sizeof(dTriIndex));
TriMesh = dCreateTriMesh(space, Data, 0, 0, 0);

このとき,dGeomTriMeshDataCreate で確保した Data は,使い終わったら,dGeomTriMeshDataDestroy で破棄する必要がある.Data の型 dTriMeshDataID は一種のポインタ型.

if(Data)  dGeomTriMeshDataDestroy(Data);
Data= NULL;

なお,if のチェックと NULL の代入は必須ではないが,メモリの二重解放を防止しやすくなったりできるのでおすすめ.




Last-modified:2015-01-01 (Thu) 09:40:53 (3002d)
Link: article/Tricks-to-avoid-double-free(3004d)
Site admin: Akihiko Yamaguchi.
Written by: Akihiko Yamaguchi.
System: PukiWiki 1.5.0. PHP 5.2.17. HTML conversion time: 0.011 sec.