OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

テーブル展開について

  • すぐに回答を!
  • 質問No.110324
  • 閲覧数305
  • ありがとう数4
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 28% (8/28)

はじめまして!
今、テーブル展開について非常に悩んでいます。
ファイルに記述されている文字列(可変長)を
共有メモリに展開するにはどうしたらいいのか
知っている方がいらしたら教えてもらえませんか?
ちなみに言語はC言語です。
宜しくお願いします。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル9

ベストアンサー率 46% (30/65)

勘違いしてたらゴメンナサイ。
テーブル展開でお悩みとは、要するに可変長列/可変長行のファイルの内容をメモリ上に展開したいがどういうデータ構造にすれば良いか?という意味ですか?
多次元の可変長データならリスト構造が定石かなぁ?
ファイルから1行読んだ後、lengthを取って見合う長さのエリアをallocし、そこにstrcpy、さらにリスト構造体をallocしてそこに前述の文字列の先頭ポインタを代入、次行以降これを繰り返してリスト構造体を繋げていく。
1charづつリスト構造体に入れて2次元リストにする手もありますが、1行分の文字列の登録/抽出処理が面倒になるので、行方向は1本の文字列として上記の様にlengthを見てallocしてしまうのが簡単かと。
こんな文章ではイメージできない!(もっともだ)様でしたら、下記URLなどを参考にして下さい。
最後に、リスト構造はゴミ掃除が大変なのでご注意を。
お礼コメント
makoto_s

お礼率 28% (8/28)

有難う御座いました。
非常に勉強になりました。
又、解らない事があった時は宜しくお願いします。
投稿日時 - 2001-07-28 16:12:44
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.2
レベル13

ベストアンサー率 34% (574/1662)

用途によっていろいろやり方があると思うので, 何をしたいかによると思います。 文字列が可変長でも文字列の数が固定かどうかとか、 あとで中身を別の物に長さも変えて入れるかどうかとか、 …。 また、共有メモリを使う場合、単一の領域のみ使うか, 複数使ってもよいか、大きさはどのぐらいにするかでも 違ってくると思います。 OSによっても多少事情がことなるかも知れませんし, その共有メ ...続きを読む
用途によっていろいろやり方があると思うので,
何をしたいかによると思います。

文字列が可変長でも文字列の数が固定かどうかとか、
あとで中身を別の物に長さも変えて入れるかどうかとか、
…。

また、共有メモリを使う場合、単一の領域のみ使うか,
複数使ってもよいか、大きさはどのぐらいにするかでも
違ってくると思います。

OSによっても多少事情がことなるかも知れませんし,
その共有メモリを使うのはどういうプログラムであるか、
いくつのプロセスがそれを同時に使うのかとか。


一応どんな場合でも共通と思うのは,ある程度の大きさを
一度にまとめてとる必要があることです。
malloc()を使う場合は数バイトのを沢山とっても
あまり気にする必要はありませんが、共有メモリの場合は
そうはいきません。
たとえば、256Kbyte領域をとって、その中を自分で
管理して使う、つまり、malloc(),free()に相当する
ことを自分でやる必要があります。
まあ、固定の大きさのテーブルをとるなら、そこまで
やる必要はありませんけど。

これは、共有メモリを管理するのはOSにとっては
かなり負荷の大きいことによります。
だから、領域はまとめて少ない数を使う必要があるわけです。


このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ