[PR]
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
- Newer : 冬のあったかい飲み物は正義
- Older : 寒い日が続きますね
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
本当にどうなってんのっていう寒さに体がついていきません。
運動しなきゃなぁ…。
皆さん突然の運動によるぎっくり腰には注意しましょうね。
はい、というわけで手作りアロケータ続きやっていきます。
メモリ確保のNew機能を実装しましょう。手順としては
1、メモリから空き要素を探す
2、空き要素を必要な分だけ使用中にする。
はい、これだけです。
んで、ここで問題です。ここでいうメモリはどこにあるんでしょうね。
この場合の正解は「どこにもない」です。作ってないですからね。
なのでまずメモリを作りましょう。
プログラム |
namespace Allocater{ class MemoryPool{ private: void* memoryPool; uint memoryPoolSize; public: // ポインタのNULL初期化は忘れない事。 MemoryPool() : memoryPool(NULL){} // 解放忘れてたら教えてもらう。 ~MemoryPool() { if( memoryPool ){ DEBUG_ERROR_PRINT("解放忘れ!"); } } // メモリを確保する void Init(uint size) { // どこかで使っているかもしれないので解放しない // NULLのときだけ確保を許可する if( memoryPool == NULL ){ memoryPoolSize = size; memoryPool = malloc(size); } }; // メモリを解放する void Release() { if( memoryPool ){ memoryPoolSize = 0; free( memoryPool ); memoryPool = NULL; } } }; }/* Allocater */ |
COMMENT
COMMENT FORM