タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

osとmemoryに関するtyruのブックマーク (2)

  • operator newとoperator deleteを書くときは規約を守ろう 8項 - higepon blog

    operator new を自分で作成するならば、いろいろ約束を守ろうという話。 自分もMonaでなんとなく new をユーザーランド向けに実装しているが以下のルールを一部守っていない気がする。 newのお約束 0byteの要求に対しても正規のポインタを返さなければならない(実装例では0byte要求は1byte要求として扱っている) エラー処理関数を呼ばなければならない std::bad_allocを投げないといけない Monaは例外をサポートしていないので今のところ無理p deleteのお約束 NULLポインタのdeleteを安全に行わせる。 つまりこれは よく見かけるコード if (somePointer != NULL) delete somePointer; は これでよい delete somePointer;ということになる。 追記: Monaのユーザランドで、newの0割り当

    operator newとoperator deleteを書くときは規約を守ろう 8項 - higepon blog
  • malloc関数の使い終わった後の開放について

    malloc()はOSからメモリを借用するのではなく、malloc()用に確保された大きなメモリブロックから、要求されたサイズの小さなメモリブロックを切り出す関数です。 free()は「小さなメモリブロックを再利用可能な状態にする」という関数でOSに対して何か影響があるような関数ではありません。 プログラムが終了するとき、malloc()用に確保してある大きなメモリブロックは全て適切に処理されます(どう処理されるかは処理系依存です)。 よって、プログラム終了のときはmalloc()済み、malloc()待ちに関わらずゴミのメモリブロックは残りません。 これはANSI-Cのライブラリ仕様ですからmalloc(),realloc,calloc()とfree()の関連でのみ成立します。 その他のメモリ関連関数/APIでは、プログラム終了時に断片化されたメモリブロックが起こってしまう可能生がありま

    malloc関数の使い終わった後の開放について
    tyru
    tyru 2009/09/01
  • 1