端末のメモリの全容量と空き容量を知るには?
端末に搭載されているメモリ容量を取得するには、 ISELL_GetDeviceInfo() を使用します。 また、現在使用されているメモリ容量取得するには、 IHEAP_GetMemStas() を使用します。 この 2 つの値を引き算することで、空き容量を知ることができます。
[ BREW API のみを使用したコード ]
// 端末のメモリ搭載量を取得する AEEDeviceInfo devInfo; ISHELL_GetDeviceInfo(shell, &devInfo); uint32 totalSize = devInfo.dwRAM; // 現在のメモリ使用量を取得する IHeap* heap; ISHELL_CreateInstance(AEECLSID_HEAP, &heap); uint32 usedSize = heap->GetMemStats(); IHEAP_Release(heap); // 現在のメモリ空き容量を取得する uint32 freeSize = totalSize - usedSize;
[ SophiaFramework を使用したコード ]
// 端末のメモリ搭載量を取得する SFXDevice dev; UInt32 totalSize = dev.GetRAMSize(); // 現在のメモリ使用量を取得する SFBHeapSmp heap = SFBHeap::GetInstance(); UInt32 usedSize = heap->GetMemStats(); // 現在のメモリ空き容量を取得する UInt32 freeSize = totalSize - usedSize;
しかし、たとえば 100KB の空き容量があるからといって、 必ずしも 100KB のメモリブロックを割り当てることができるわけではありません。 MALLOC() と FREE() によりメモリの割り当てと解放を繰り返すと、 メモリの断片化が発生するからです。
特定のサイズのメモリブロックを一度に割り当てられるかどうかを調べるには、 IHEAP_CheckAvail() 関数を使用します。