- ベストアンサー
HP-UXでの構造体サイズの制限について
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ユーザプログラムにシステムリソースを食いつぶされては困りますので 当然、制限はあります。 構造体に限った事ではありませんが、ulimit あるいは limit コマンドで プロセスが使用できるリソース量が制限されています。 あなたのOSで確認してください。 「man bash」からulimitの説明 現在の制限を全て報告する -c 生成されるコアファイル (core) の最大サイズ -d プロセスのデータセグメントの最大サイズ -f シェルが生成できるファイルの最大サイズ -l メモリにロックできる最大サイズ -m 常駐セットサイズの最大値 -n オープンできるファイル・ディスクリプターの最大数 -p 512 バイトブロック単位でのパイプのサイズ -s 最大スタックサイズ -t CPU 時間の最大量 (秒単位) -u 1 人のユーザが使用できる最大のプロセス数 -v シェルが使用できる最大の仮想メモリ量
その他の回答 (2)
- shige_70
- ベストアンサー率17% (168/946)
#1です。 ちょっと簡単に書きすぎました。すみません。 論理的制限とか定義がないというのは、C言語としての話です。 OSから見た場合は、unixとしては#2さんのおっしゃるとおりでulimitコマンドなどを用いて制限を確認したり変更(権限があれば)したりできます。 なお、パラメータというのは関数呼び出しのことですよね? それはまた別の話です。関数のパラメータは通常スタックに積むので、スタックエリアのサイズの影響を受けます。このサイズは環境依存で、しかもCPUによってはスタックのオーバフローを検出できないものもあるのであまりでかい構造体を直接引数に与えてしまうと最悪の場合暴走します。最近のCPUではそういうことはないと思いますが。。。
お礼
再びの回答ありがとうございました。 お礼の方が遅れて申し訳ありません。 パラメータは関数呼び出しのことです。 ええと、せっかく教えていただいたのですが余りよくわからないので詳しく教えていただけると、ありがたいのですが。。。 スタックサイズを知る方法はあるのでしょうか? また、なぜ暴走するのでしょうか?
- shige_70
- ベストアンサー率17% (168/946)
論理的な制限はありません。ですから当然定義もありません。 制限があるとすればメモリ空間などの物理的な制限です。 ちなみにこれは、unixに限った話ではありません。
お礼
早速の回答ありがとうございました。
補足
では、パラメータとして引き渡す際には変数サイズの制限があるのでしょうか? また、メモリ空間の制限についてはどのように確認すればよいのでしょうか?
関連するQ&A
- 構造体と構造体型の変数宣言箇所
はじめてborlandC++builder6でプログラムを作っているのですが、構造体と構造体型の変数宣言箇所についてわからないことがあるので質問させてください。 あるフォームのソースファイル(○○○.cpp)内の関数で、自分で定義した構造体を使う場合、ヘッダファイル(○○○.h)に構造体を定義すると、関数内で「変数が未定義」エラーになってしまいます。一方、ソースファイル(○○○.cpp)の先頭に書けばエラーになりません。 ヘッダファイルに変数定義した場合とソース内の先頭に構造体と構造体型変数を定義するのでは何が違ってくるのでしょうか?
- ベストアンサー
- C・C++・C#
- C言語のHP-UXからLinuxへのポーティング
C言語で開発されたプログラムをHP-UXからLinuxへのポーティングする場合、どのように行えば効率的でしょうか? また、注意する内容があれば教えて頂けないでしょうか? ポーティング前のOSはHP-UX(詳細不明) ポーティング後のOSはRedHat Enterprise Linux 5.5 (64bit) C言語で開発されたプログラムは、ソケット通信でサーバ間通信を行う機能となります
- ベストアンサー
- C・C++・C#
- FILE構造体がどのように定義されているか
こんにちは。 C言語初心者です。 今、FILE構造体について学んでいるのですが、stdioでFALE構造体が どの用に定義されているか調べなさい、という問題がありました。 それは、どのように調べればいいのでしょうか。 また、どのように定義されているのでようか。
- ベストアンサー
- C・C++・C#
- 構造体変数がないとメンバ操作できないのはなぜ?
C言語の構造体に関して質問がありますが、structで型を作成して、構造体変数にてメンバの代入・参照をする。ということなんですが、なんでメンバ操作には構造体変数からでないといけないのでしょうか? 直接、型枠にてメンバ操作をすれば良いのに、なぜ構造体変数から操作しないといけないのでしょうか? 「クラス」や「オブジェクト」みたいに、一々ゼロから作成したり、コピペで作成しなくても済むように、このような形になっているのでしょうか? 回答の方よろしくお願いします。
- 締切済み
- その他(プログラミング・開発)
- sqliteの構造体
SQLiteを使ったメールソフトを作っています。 sqliteの構造体 sqlite3_stmt の宣言は見つかるのですが 構造体の内容の定義してあるものが見つかりません。 sqlite3.h, sqlite3.c を探したのですが見つかりませんでした。 この構造体が見つからないと そこに登録してある値が使えません。 それとも、 この構造体は定義されていなくて これを当てにしないで プログラムを組まなくてはいけないのでしょうか? 使わなくても動かせそうですか。。。 お分かりの方、よろしくお願いします。
- ベストアンサー
- C・C++・C#
- 構造体の纏め方
関数のポインタを使用して、 /* プロトタイプ宣言 */ void func1 ( void ); void func2 ( void ); void func3 ( void ); /*******************/ /* プロトタイプ纏める */ void ( *funcs[] ) ( void ) = { func1, func2, func3 }; /*********************/ と言うのが、構造体でも出来ないでしょうか?と言うのが質問です。 変数(添字)によって、見るべき構造体を自由に変更させたいと言うのが主な使用方法です。 typedef struct _tag { int arg1; int arg2; } tag; tag watch1 , watch2 , watch3; とある変数が1なら、watch1、とある変数が2なら、watch2、とある変数が3なら、watch3を見ると言うようなプログラムにしたくて、質問しました。 witch文を使うしかないのでしょうか? 良き回答、お待ちしています。
- ベストアンサー
- C・C++・C#
- C言語の構造体のサイズについて
いつもお世話になっていります。 早速ですが、C言語の構造体のサイズについて教えてください。 typedef struct B { short code; char name; float price; } B; typedef struct A { B bbb[10]; double sougaku; } A; A aaa; といった構造体があった場合に、 sizeof(aaa.bbb.code) + sizeof(aaa.bbb.name) + … + sizeof(aaa.sougaku) という風に一つ一つサイズを取得し、合計して構造体のサイズを取得した場合と sizeof(aaa) という風に構造体のサイズを取得した場合のサイズの値が異なるといった現象が起きます。 その原因が分からなくて困っております。 そこで考えられる要因をお教えください。 因みに実際の構造体はサイズで言えば2500バイトくらいあります。 froat/char/double/short 型を使用しております。 よろしくお願いします。
- ベストアンサー
- C・C++・C#
お礼
回答ありがとうございます。 お礼が遅くなりまして申し訳ありませんでした。 上記コマンドについて新しく知ることができてよかったです。