HelloWorld SymbianOS 解説二回目

昨日のHelloWorldのソースコードの解説を行っていきます。

__UHEAP_MARK & __UHEAP_MARKEND
__UHEAP_MARKマクロで始まるコードのセクション内で割り当てられたヒープ領域が__UHEAP_MARKENDマクロに到達した時にすべて削除されているかテストを行うようです。
未削除の割り当てがある場合は__UHEAP_MARKENDにてエラーが出るので、ヒープ領域に確保したメモリを解放しなければいけないことを教えてくれます。
これはC++ではガーベジコレクションがないので、間違えて記述を行ってしまうとメモリリークを起こしてしまうために、メモリリークを意識せずに起こさないために記述されたマクロです。
このマクロが有効なのはデバックビルド時のみのようです。
ちなみにこちらのマクロはネストすることもできます。

TRAPD
TRAPDは定義済みのマクロで、このマクロを使うことによってL関数でLeaveが発生した場合にそれをキャッチすることができます。
Leaveとはスタックを次から次へと解放していく処理。これをTRAPDでキャッチしないと、メインループすら抜けてしまうようです。
L関数とはMainL()などの関数名の最後にLがついた関数のことを表します。

HelloWorldの説明は以上となります。
また学習を行い、わかったところがありましたら随時書いて行こうと思いますのでよろしくお願いします。

にほんブログ村 IT技術ブログへ
にほんブログ村
にほんブログ村 IT技術ブログ プログラム・プログラマへ
にほんブログ村