0

複数の配列をおそらく構造体に格納できる C でデータ構造を設計しようとしていますが、各配列のサイズは異なります。例えば:

typedef struct task_list
{
  int total_tasks;
  unsigned int *task_array
 }task_list;

typedef struct node_list
{
  int total_nodes;
  task_list *array_node
 }node_list;

したがって、5 つのノードがある場合total_nodesは になり5、5 つの後続の配列、つまりarray_node[0]...array_node[1]が必要ですarray_node[4]。各配列は符号なし整数 (タスク) を保持します。問題は、これらの配列のそれぞれが異なる数のタスク ( total_tasksstruct 内task_list) を保持しているため、各配列のサイズが異なることです。

これらのタスク配列ごとにメモリを作成して割り当てるにはどうすればよいですか? 後でそれらにアクセスする最良の方法は何でしょうか?

4

3 に答える 3

1

node_list を割り当て、次にその array_node を割り当てて 5 つの task_list を保持し、次に各 task_list の task_array を割り当てて可変数のタスクを保持する必要があります ( を使用malloc(total_tasks) * sizeof(unsigned int)))。

于 2013-08-12T19:15:57.533 に答える
1

1 次元配列の場合、メモリを割り当てる最善の方法は malloc を使用することです。繰り返しになりますが、これらは 1 次元であるため、配列表記を介してアクセスできます。ノードを削除するときは、free を使用してアレイを解放します。配列ノードが大きくなった場合は、realloc を使用して配列を大きくし、古いポインターを保持します。

于 2013-08-12T19:14:56.870 に答える