より良い環境を求めて このページをアンテナに追加 RSSフィード

2013-09-03

[] mallocの使いどころが分からない

既存のAPImalloc前提の場合は置いといて、自分で構造体を作る場合。


例えばデータの数が多い場合

struct very_long_list
{
  char *name;
  void *data;
};

static struct very_long_list *list_head;
static int list_count = 0;

struct very_long_list *very_long_list_add(char *name, void *data)
{
  ...
  // ここでmalloc、または呼び出し元でmallocする?
}

void do_something()
{
  int i;
  for (i = 0; i < list_count; i++){
    ...
  }
}

こういう感じ?



でもmallocで大量にメモリを確保するならコールバック関数を渡して

typedef void (callback_func)(struct very_long_list *);

void set_something_func(callback_func *callback)
{
  // 処理が複数の場合は関数ポインタの構造体を渡す
}

とすると、malloc要らないしメモリも使わないような。



というわけで、たぶん基本的な部分が分かっていない。

GUIで現在のディレクトリのファイル一覧を常に表示しておく、とかだと使うのかな?

その場合はGUIの部品を生成するタイミングでGUIAPIに沿ってメモリを確保するので、やっぱり自分の作った構造体のメモリは動的確保しくていいような気がするが。

憶測で書いている。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト

コメントを書くには、なぞなぞ認証に回答する必要があります。

トラックバック - http://d.hatena.ne.jp/n314/20130903/1378176904
リンク元