![]() ![]() ![]()
|
BREW C++ ライブラリ & GUI フレームワーク : SophiaFramework 3.0 |
SophiaFramework には、C++ 言語の全てのメモリ操作について、 Brew エミュレータ上でのメモリ追跡機能を提供しています。
MemoryAllocate マクロは、 BREW エミュレータ上でのメモリ追跡が可能な メモリ割り当て機能を提供します。
このマクロはメモリの初期化を行いません。
TARGET_ENVIRONMENT_SIMULATOR マクロが定義されている場合は SFDWatcher::malloc に、 TARGET_ENVIRONMENT_PHYSICAL マクロが定義されている場合は SFXHelper::malloc に 置き換えられます。
このマクロは次のように使用します。
SInt16Ptr p = reinterpret_cast<SInt16Ptr>(MemoryAllocate(sizeof(SInt16) * 256));
この例では、SInt16 256個分のメモリを確保しています。
![]() |
MALLOC、ERR_MALLOC について |
|---|---|
SophiaFramework では、MALLOC と ERR_MALLOC は使用できません。 MemoryAllocate マクロを使用してください。 | |
MemoryReallocate マクロは、 BREW エミュレータ上でのメモリ追跡が可能な メモリ再割り当て機能を提供します。
TARGET_ENVIRONMENT_SIMULATOR マクロが定義されている場合は SFDWatcher::realloc に、 TARGET_ENVIRONMENT_PHYSICAL マクロが定義されている場合は SFXHelper::realloc に 置き換えられます。
このマクロで新規のメモリを割り当てる場合、 メモリの初期化は行われません。
このマクロは次のように使用します。
SInt16Ptr p = reinterpret_cast<SInt16Ptr>(MemoryAllocate(sizeof(SInt16) * 256)); ... p = reinterpret_cast<SInt16Ptr>(MemoryReallocate(p, sizeof(SInt16) * 4096));
この例では、初めに SInt16 256 個分のメモリを確保した後しばらくして、 その領域を SInt16 4096 個分に広げます。
![]() |
REALLOC、ERR_REALLOC について |
|---|---|
SophiaFramework では、REALLOC と ERR_REALLOC は使用できません。 MemoryReallocate マクロを使用してください。 | |
MemoryFree マクロは、 BREW エミュレータ上でのメモリ追跡が可能な メモリ解放機能を提供します。
TARGET_ENVIRONMENT_SIMULATOR マクロが定義されている場合は SFDWatcher::free に、 TARGET_ENVIRONMENT_PHYSICAL マクロが定義されている場合は SFXHelper::free に 置き換えられます。
このマクロは次のように使用します。
SInt16Ptr p = reinterpret_cast<SInt16Ptr>(MemoryAllocate(sizeof(SInt16) * 256)); ... MemoryFree(p);
この例では、予め確保されたメモリ領域を解放しています。
![]() |
BREW ヘルパー関数の FREE について |
|---|---|
SophiaFramework では、BREW ヘルパー関数の FREE は使用できません。 MemoryFree マクロを使用してください。 | |
SophiaFramework ではその内部で new/delete 演算子を定義しています。 これらの演算子は TARGET_ENVIRONMENT_SIMULATOR/TARGET_ENVIRONMENT_PHYSICAL マクロの定義にあわせてメモリ追跡機能を有効/無効にします。 各マクロと呼ばれる関数との関係は次の通りです。
| 演算子 | TARGET_ENVIRONMENT_SIMULATOR (メモリ追跡機能有効) | TARGET_ENVIRONMENT_PHYSICAL (メモリ追跡機能無効) |
|---|---|---|
| new | SFDWatcher::malloc | SFXHelper::malloc |
| delete | SFDWatcher::free | SFXHelper::free |
因みに、コンストラクタに初期化コードを記述しない限り、 new 演算子によるメモリの初期化は行われません。
安全性を考慮して、SophiaFramework ではメモリの割り当てや解放を行う、 あるいはその内部で割り当てや解放を行う BREW ヘルパー関数は 使用できないようになっています。
以下の関数は使用できないマクロおよびヘルパー関数と、 推奨されるその代替のマクロ・演算子・関数・クラスです。
| 使用できないヘルパー関数 | 代替案 |
|---|---|
| MALLOC、ERR_MALLOC | MemoryAllocate / new |
| REALLOC、ERR_REALLOC | MemoryReallocate |
| FREE | MemoryFree / new |
| STRDUP、ERR_STRDUP | SFXAnsiString |
| WSTRDUP | SFXWideString |
TARGET_ENVIRONMENT_SIMULATOR マクロが定義されている状態で、 メモリ操作について SFDWatcher クラスを使うと、BREW エミュレータ上でメモリの追跡を行うことができます。
詳しくは SFDWatcher をご覧ください。
|
Copyright (C) 2002 - 2009 Sophia Cradle, Inc. All Rights Reserved. |
![]() ![]() ![]()
|