« 読書無計事情 | トップページ | 新入社員の感じたこと »

2012年11月 8日 (木)夏よりも冬が好き

おはようございます。
コタツを出そうと思ったところ、
実家にコタツ布団を回収されていた事に気が付いた。
本日の当番、プログラマーのT.Mです。

最近、急に寒くなりましたね。
冬っていうのはコタツなど暖房器具で意外と電気やガスを消費するものです。
まぁ夏でもエアコンなど冷房器具で消費するんですけどね。

プログラムで意外と消費するものと言えばメモリです。

例えば、STLでvectorという動的配列があります。
ランダムアクセスが可能で便利なvectorですが"push_back"とか"insert"などの
要素追加を行った際、
内部では必要な要素数より多く、要素のメモリを先に確保しています。
しかも、要素数が増えれば増えるほど確保するメモリが増えていきます。

言語がC++等の場合はメモリ管理はプログラマー自ら管理を行う必要があるので
動的配列を使いすぎたり、大きな構造体で動的配列の要素を追加し過ぎた時は、
環境によって最悪の場合は強制終了なんて事もありえます。
PCの環境ではほぼありえないと思いますが・・・。

一応の対策としては
下記のような"swap"で強制的に切り詰めるか
vectorを使わずにlistを使うようにするとかですかね。
listの場合はランダムアクセスができませんが・・・。

//--------------------------------------------------------------
#include <iostream>
#include <vector>
#include <list>

using namespace std;

int main()
{
  vector<int> iVector;
  list<int> iList;

  for(int i = 0; i < 30; ++i)
  {
    iVector.push_back(0);         // vectorに要素を30個追加
    iList.push_back(0);          // listに要素を30個追加
  }

  int iUsed, iEnsure;

  iUsed = iVector.size();         // 使用中の要素は30
  iEnsure = iVector.capacity();       // 確保済の要素は42
  cout << "Used/Ensure" << " : " << iUsed << "/" << iEnsure << "\n";

  vector<int>(iVector).swap(iVector);   // 確保済の要素を30に変更

  iUsed = iVector.size();         // 確認の為に出力
  iEnsure = iVector.capacity();
  cout << "Used/Ensure" << " : " << iUsed << "/" << iEnsure << "\n";

  // listの場合、使用中 : 30
  cout << "iList_Size = " << iList.size() << "\n";


  return 0;
}
//--------------------------------------------------------------

環境によって確保する量が変わりますが
私の環境ではこんな感じでした。

メモリ制限がある場合の制作では気を付けるべき内容だと思います。



・・・・・・コタツ布団、どうしよう・・・。

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2012/11/post-9b93.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)

« 読書無計事情 | トップページ | 新入社員の感じたこと »

プログラマー」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: 夏よりも冬が好き:

« 読書無計事情 | トップページ | 新入社員の感じたこと »