C言語における高速ハッシュテーブルと動的配列

2025-01-22

この記事では、C++の`std::unordered_map`と`std::vector`に相当するものをC言語で高速に実装する方法を示しています。カスタムアロケータ、カウント付き文字列、効率的なハッシュ関数を作成することで、フラットハッシュテーブルと階層型ハッシュテーブル、そして動的配列の実装を紹介しています。文字列連結、環境変数の操作、ハッシュテーブルのセキュリティ強化(Address Space Layout Randomization(ASLR)による衝突耐性の向上)についても解説しています。

続きを読む

拡張インラインアセンブリにおける一般的な間違いを避けるためのルール

2024-12-21

この記事はインラインアセンブリのチュートリアルではなく、よくある間違いを避けるための6つのルールのまとめです。著者は、インラインアセンブリは危険で、可能な限り避けるべきだと強調しています。現代のコンパイラは、ほとんどのユースケースにおいて、組込み関数を提供しています。どうしても避けられない場合は、以下のルールに従ってください。`volatile`修飾子を使用する;メモリにアクセスする場合は`memory`クロバーを使用する;入力制約を変更しない;インラインアセンブリから関数を呼び出さない;絶対アセンブリラベルを定義しない;アセンブラのローカルラベル機能を使用してラベルの競合を回避する。この記事は、オンラインチュートリアルやLLM生成コードを見直すことで、これらのルールを実践することを推奨しています。

続きを読む