ファイルシステムを作成しようとしていますが、ファイル記述子をcallocする必要があります。呼び出しメモリ
のは、私は次の定義を持つ2つの構造があるとしましょう:
#define DESCRIPTOR_MAX (256)
#define TABLE_MAX (32)
typedef struct S16FS S16FS_t;
typedef struct {
bitmap_t *fd_status;
size_t fd_pos[DESCRIPTOR_MAX];
inode_ptr_t fd_inode[DESCRIPTOR_MAX];
} fd_table_t;
struct FS {
back_store_t *bs;
fd_table_t fd_table;
};
私は問題なく新しいファイルシステムをcallocingよ:
FS_t *fs = (FS_t *)calloc(8, sizeof(FS_t));
が、私が電話したいときに私の問題が発生するfd_table
FS
構造体。ここに私がしようとしているものがあります。
この1つはエラーを生成しません:
fs->fd_table = *(fd_table_t*)calloc(TABLE_MAX, sizeof(fd_table_t));
私は次のようにエラーを取得しています:
fs->fd_table.fd_pos = (size_t *)calloc(TABLE_MAX, sizeof(size_t));
error: array type 'size_t [256]' is not assignable
誰かが私が間違っている場合、またはてるものを私に説明できます私は私のプロセスでは完全に間違っていますか? fd_pos
を呼び出す必要がありますか?
「FS_t」は何ですか?また、Fyiは、1つのステートメントで代入の右側に逆参照を配置することは、メモリリークのためのレシピです。これは: 'fs-> fd_table = *(fd_table_t *)calloc(TABLE_MAX、sizeof(fd_table_t));'は全く意味を持たず、その間にメモリをリークします。 – WhozCraig
あなたは知っている、私はtypedefを追加することを忘れていた。私は自分の質問を編集します –
それは私が考えたものです。それは間違いを起こさなかったが、ひどく間違っていた。 –