C/C++と親和性の高いのはどんなデータ構造?

■構造体ごとに分離してしまう構造
struct FILELIST{
int id;
char *filename;
};
これをファイル名の数だけ確保してデータベースから読み込む

■文字列の長さなどの情報だけを構造体に入れ、文字列は生データとして置いておく構造
struct FILELIST{
int id;
char *offset;
int length;
};
char *filelistdb;