問題タブ [static-memory-allocation]

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.

0 投票する
1 に答える
51 参照

c - Cの既知の位置にあるポインタで配列を通過することは可能ですか?

私の質問には説明が必要です:

まず、サイズ n (動的または静的) の 1D 配列を考えてみましょう。タブとしましょう。

配列がアドレス 0x01 から (0x01 + n - 1) までのメモリに格納されていると仮定して簡単に説明します。

ここで、p というポインターを考えてみましょう。開始インデックス i (0 から n - 1 の間)。

次に、それを行います:

p はアドレス 0x0i の値を知っています。(表記は正しくありませんが、要点はわかります)。

このように p を使用してtab[i - 1]またはtab[i + 1]を読み取ることができますか?

それとも単にこのように?

そして最終的にこれを行うのですか?

それが1D配列で可能であれば、多次元配列でも可能ですか? そして、Cでそれを実装する方法は?

0 投票する
1 に答える
104 参照

c - C は、最初に割り当てられた配列から静的メモリを参照します

動的メモリを使用しないというソフトウェア要件があります。その上で、k_dimensions、k=1 (通常の配列のように)、k=2 (2 次元) などで kd-tree を作成しようとしています。

私の kd_tree.h ヘッダーには、ツリー (スニペット) の表現があります。

私の kd_tree.c 実装では、新しいノードの配列に事前に割り当てられた静的メモリを割り当て/参照しようとしています (スニペット):

私は今クラッシュしています。これは data_points 配列のアドレスを参照する正しい方法 root->info = &data_points_space[current_number_of_data_points+i];ですか?

ありがとう

0 投票する
1 に答える
143 参照

c - 関数でストレージを使用する場合の malloc と char array[i] の使用の違い

array[size]実行前に定義された長さの配列 (コマンド ライン引数に依存) を で定義する場合と使用して定義する場合の違いは何malloc()ですか? array[i]スタックに置かれたデータにつながりmalloc()、ヒープを使用します[このスタックオーバーフローを参照してください]

そのため、大きなデータではスタックオーバーフローが発生する可能性がありますが、新しいマシンでは合計 30charintで問題はありません (これによると、Windows のスタックは約 1MBです)。

したがって、おそらく明らかな何かが欠けています。

私が理解している限り、で定義されているmain()場合、2つは同じである必要があります。

例 1

例 2

しかし、関数内で配列を使用し、それをポインター ( func(char* array)) または配列 ( funct(char array[])) として渡すと、gdb-debugger は、関数が #1 で壊れたデータを渡されたことを知らせてくれますmalloc()

array[i]、コンパイル時に決定されない場合に使用しても問題ありませんか? それはスコーピングの問題ですか?この回答にはそのようなことを示唆するコメントがありますが、それがここに当てはまるかどうかはよくわかりません。

C99を使用しています。