問題タブ [struct]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - StructLayout を明示的に指定する必要があるのはいつですか?
私は C# からの DLL の呼び出しをいじっていて、独自の構造体を定義する必要があることに気づきました。多くの記事では、構造体の順次レイアウトを強制しています
それで、私はスイートに従いました、そして私のプログラムはうまくいきました。今、私がラインを取り出したとき、それはまだ機能しています。なぜそれが必要なのですか?
c# - 16 バイトを超える構造体の最適解
私はそれを構造体として使用すると考えている型を持っています。
- 単一の値を表します
- 不変です
しかし問題は、int のフィールドが 6 つあることです。
では、このタイプにはどのソリューションを使用する必要がありますか?
- 構造体を使い続けますか?
- クラスチェンジ?
- または6つの整数をintの配列にパックして、フィールドが1つだけになるようにします
編集
6 つの整数フィールドを持つ構造体のサイズは 24 バイトで、これを渡すには巨大です。構造体の推奨サイズは 16 バイト以下です
c++ - メモリ内の C++ オブジェクトの構造と構造体
次のようなクラスがある場合
そして、次のような構造体
の記憶にある構造と 同様のexample_struct
ものです。Example_Class
たとえば、次のようにすると
と(つまり、foo_class の x、y 値foo_struct.x = 8
とfoo_struct.y = 9
同じ値) ?
私が尋ねる理由は、オブジェクトを C コードと共有している C++ ライブラリ (変更したくない) があり、構造体を使用して C++ ライブラリからのオブジェクトを表現したいからです。私はオブジェクトの属性にのみ興味があります。
理想的な状況は、C と C++ コードの間の共通構造を Example_class でラップすることですが、使用中の C++ ライブラリを変更するのは簡単ではありません。
c - C構造体を解放するには?
与えられた構造体、例えば
次のコード (IPhone で実行されている Objective-C クラスのコンテキストで) が「解放されているアライメントされていないポインター」例外をスローするのはなぜですか?
NB私の究極の目標は、多くのベクトル数学関数を備えたCライブラリを使用することです。したがって、CとObjective-Cを混在させる実行可能な方法を見つける必要があります
iphone - Objective-Cでクラス変数として初期化されたときにC構造体が割り当てられるメモリの種類
次のことを考慮してください。
「マトリックス」変数が関連しなくなったとき(またはオブジェクト全体が解放されたとき)に、構造体で割り当てられた64バイトが適切に解放されるようにするにはどうすればよいですか?
c - fooが構造体である「struct foo*」と「foo*」の違いは?
Cでは、fooが構造体の場合、単に「foo」ではなく「struct foo」と書くことに違いはありますか?
例えば:
ありがとう/エリック
c++ - データのみのクラスと構造体?
このような場合、構造体よりもクラスを使用する利点はありますか? (注:変数のみを保持し、関数はありません)
対:
同様の質問:
c - Cで構造体をchar配列に変換する方法
ネットワーク経由で送信するために、構造体を char 配列に変換しようとしています。ただし、そうすると、char配列から奇妙な出力が得られます。
ax のさまざまな値の出力を次に示します (gcc を使用する X86 で):
127:
7f 00 00 00
127 0 0 0
128:
ffffff80 00 00 00
-128 0 0 0
255:
フフフフフ 00 00 00
-1 0 0 0
256:
00 01 00 00
0 1 0 0
127 と 256 の値は理解できますが、128 になると数値が変わるのはなぜですか? 80 00 00 00 128 0 0 0 ではない理由
変換プロセスで何かをするのを忘れていますか、それとも整数表現について何かを忘れていますか?
*注: これは小さなテスト プログラムです。実際のプログラムでは、構造体にもっと多くの変数名があり、リトルエンディアンに変換します。
*編集:フォーマット
c++ - 構造体の配列と new / delete
私はこのような構造体を持っています:
次のように、アイテムを「削除」したいとします。
そして、後で同じ場所に新しいアイテムを作成しました。
delete[]
これを片付けるために電話する必要がありますか?items[]
それとも、コンパイルする前に配列の境界がわかっているので、これは必要ではないでしょうか?
そのポインターを NULL に設定することは有効ですか、それとも削除を呼び出す必要がありますか?