問題タブ [sizeof]
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++ - C memset はすべてのメンバーに書き込みを行っていないようです
int 座標と float 座標の両方を処理する小さな座標クラスを作成しました。
次に、 main() で次のことを行います。
しかし、私の MSVC デバッガーによると、x 値のみが 0 に設定され、y 値はそのままです。これまでテンプレート クラスで sizeof() を使用したことがありませんでしたが、それが原因でしょうか?
c++ - 初期化後に C++ 配列のサイズを変更できますか?
私はプログラミングを学んでおり、C++ は私の最初の言語です。わざわざポインターを使って私に見せようとしないでください - 私はまだそれらを理解していません。
私はマージソートアルゴリズムを割り当てられました(私はクラスを受講していません-数人の友人が私を助けてくれているだけです)、アルゴリズムは説明されていますが、実装はありません。これを書き直して、奇数と偶数の両方の整数で機能するようにします。このコードを追加してみました:
同じ整数を使用して、後続の両方の配列を反復処理できるようにします。sizeof(farray) は 16 バイト、つまり 4 つの整数を示しています。したがって、サイズ変更ではありません。私が知りたいこと - 初期化後に配列のサイズを変更することは可能ですか?
編集:ベクトルを実装するにはどうすればよいですか? ループ内でイテレータを使用して反復処理を行い、値をコピーする方法がわかりません。
c - Objective-C でオブジェクトのサイズを確認する
Objective-C オブジェクトのサイズを見つけようとしています。私は次のようなものを使用しています:
しかし、それは私にポインタのサイズを与えるだけです。
私は何を間違っていますか?
c - Cの構造体にshortが4バイトとして格納されるのはなぜですか?
私は次の2つの構造体を持っています:
問題は、sizeof(Content)が160を返すことです。構造体は、11個のshort、6個のint、76個のchar、7個のfloat、1個のdoubleで構成され、合計で158バイトになります。私は3回カウントしましたが、まだ2バイトの違いがあります。
構造体の各変数の位置を出力するための小さなコードを記述しましたが、突然float wlen
4バイトかかることがわかりました。私のコードは次のとおりです。
出力は次のとおりです。
コンパイラはMSVC8であり、UNICODEは定義されておらず、他のマクロも定義されていません。x86です。
gccバージョン3.4.4で同じコードをコンパイルしようとしましたが、出力は同じです。
Sizeof short content.wlen: 4
誰かが私にこれを説明できますか?
前もって感謝します。
編集:答えてくれてありがとう!私は今それを持っています。
c - 異なるタイプへのポインターのサイズが異なるプラットフォームはありますか?
C標準では、さまざまなタイプへのポインターをさまざまなサイズにすることができます。たとえばsizeof(char*) != sizeof(int*)
、許可されています。ただし、ポインタをavoid*
に変換してから元の型に戻す場合は、元の値と同じであると比較する必要があります。したがって、論理的にはsizeof(void*) >= sizeof(T*)
、すべてのタイプT
について正しいですか?
現在使用されている最も一般的なプラットフォーム(x86、PPC、ARM、64ビットバリアントなど)では、すべてのポインターのサイズは、ポイントされたタイプに関係なく、ネイティブレジスタサイズ(4または8バイト)に等しくなります。異なるタイプへのポインターが異なるサイズを持つ可能性がある難解なまたは組み込みのプラットフォームはありますか?私は特にデータポインタについて質問していますが、関数ポインタのサイズが異常なプラットフォームがあるかどうかも知りたいと思います。
私は間違いなくC++のメンバーへのポインターとメンバーへのポインター関数について質問していません。これらは一般的なプラットフォームでは通常とは異なるサイズを取り、クラスへのポインタのプロパティ(非多形、単一継承、多重継承、仮想継承、または不完全型)に応じて、1つのプラットフォーム内で変化することもあります。
c - 32 ビットとさまざまな 64 ビット データ モデルの sizeof(size_t) は何ですか?
64 ビット システムでsizeof(unsigned long)
は、システムによって実装されるデータ モデルによって異なります。たとえば、LLP64 (Windows) では 4 バイト、LP64 (Linux など) では 8 バイトです。あるべきものは何sizeof(size_t)
ですか?データモデルによって異なりますsizeof(long)
か? もしそうなら、どのように?
参考文献:
c - なぜ2つの引数でsizeof演算子を呼び出すのですか?
私は最近、次のようなコードに出くわしました。
(var
タイプはどこですか)
sizeof
オペレーターにとって2つの引数のように見えるものを見て、私は非常に驚きました。ISO / ANSI C99規格をすばやくスキャンしても、秘密は見つかりませんでした。そこにコンマを許可する文法の読み方を思い付くことができませんでした。
Googleコードを検索すると、いくつかのPPCコードでこの構文の例を見つけることができました。
これはPPC固有の構文ですか?どういう意味ですか?
編集:私が見ていたものとリンクされたコードの両方が、WindRiverDiabコンパイラに固有の構文であることがわかりました:
sizeof(type、int-const):
int-constが0の場合、 sizeofはタイプのバイト単位のサイズを返します。
int-constが1の場合、 sizeofは型の配置を返します。
int-constが2の場合、 sizeofは、型の型を指定する整数定数を返します。値については、 Diab C /C++ユーザーズガイドで「sizeof演算子」を検索してください 。
うわー、彼らは本当にsizeof
演算子の意味を過負荷にしました。
EDIT2:完全なドキュメントはここにあります:http ://www.vxdev.com/docs/vx55man/diab5.0ppc/c-additi.htm#3001432
c - メモリを操作するときに sizeof( char ) を掛ける必要がありますか?
malloc を使用して同様のメモリ操作を行う場合、sizeof( char ) が常に 1 であることに依存できますか?
たとえば、 type の N 個の要素にメモリを割り当てる必要がありchar
ます。必要に掛けていsizeof( char )
ます:
または、 sizeof( char ) が常に 1 であることを信頼して、乗算をスキップできますか
コンパイル中に評価されることを完全に理解してsizeof
おり、コンパイラは乗算をコンパイルすることさえできるため、パフォーマンスの低下は最小限に抑えられ、ほとんどの場合ゼロになります。
私は主にコードの明瞭さと移植性について質問しています。この乗算は型に必要ですchar
か?
c - unsigned char * が指すメモリ領域のサイズは?
わかりました、これが以前に尋ねられたことは知っていますが、検索した後、適切な答えが見つかりませんでした。
バッファー (unsigned char *) を base64 に変換する必要があります。使用している base64 関数はパラメーターとして次のように取ります。
は文字列int srclen
の長さですsrc
。
私の質問は、バッファの長さをどのように取得するかです。いいえ、null で終了していません。いいえ、必要ありませんsizeof(BYTE)
。srclen
そのバッファをbase64に変換できるように、何を渡すかを知る必要があります。
編集:
ここに私がやっていることを示すいくつかのコードがあります:
c# - .NETリフレクション:クラスのフィールドのサイズを決定します
目標:クラスのフィールドのサイズ(バイト単位)をプログラムで決定すること。たとえば、以下のコメントを参照してください...