C言語で構造体なしの動的配列実装が話題 — 長さ情報をポインタに格納する巧妙なハック
DRANK

6月13日、alurm氏が「A generic dynamic array in C that stores no capacity and needs no struct · GitHub」と題した記事を公開した。この記事では、構造体を使わずに容量情報も保存しない、独特なC言語の汎用動的配列実装について詳しく紹介されている。長さをポインタに格納する斬新なアイデアこの実装の最も驚くべき点は、ポインタ型の変数に整数値(uintptr_t)をキャストして長さ情報を格納していることだ。通常のC言語による動的配列実装では、データポインタ、長さ、容量を格納する構造体を定義するのが一般的だが、この手法は全く異なるアプローチを取っている。vec_[0] = (typeof(vec_[0]))(len + 1); // 長さをポインタとして格納auto len = (uintptr_t)vec_[0]; // ポインタから長さを取得

by @tf_official
Related Topics: C (programming language)