cwnicol programming

プログラミング関連の投稿をすこしだけ

C

無限ループ 場所特定手順

mugen_loop 上記ソース実行中にアタッチ後、「すべて中断(Ctrl+Alt+Break)」し、呼び出し履歴を見ればどこで無限ループになっているか分かる。

リストモジュール

C

メモリプールと併せて以下の使用感。エラー処理は未実装。 データのメモリはメモリプールで管理。リスト管理、ノードのメモリは リストモジュールで管理。 list sample2

メモリプール

C

Cでmallocを何度も使用するとメモリ解放忘れが起きやすい。 一括でメモリを確保し、細切れで必要分使うコードがネット上にあったので クラスモジュールで作成。 memory pool · GitHub

デバッグ実行時のコマンド引数、作業ディレクトリ設定

[プロパティ]-[デバッグ]で、コマンド引数と作業ディレクトリが設定可能。 これらを使えばアタッチしなくてもデバッグできそう。

実行時エラー箇所 確認手順

デバッグ実行開始 エラーダイアログで中断ボタン押下 呼び出し履歴でコールスタック確認

無限ループ箇所 確認手順

デバッグ実行開始 無限ループにはまる 一時停止 呼び出し履歴でコールスタック確認

キュー

C

・キュー →循環配列(リングバッファ)で実装するのが定石っぽい ・優先度付きキュー →二分ヒープで実装するのが定石っぽい

C言語 ダイクストラ法 ライブラリ その2

C

cwnicol.hatenablog.com 上記のインターフェースで、リストを使用するように、 また、最短ルート時のコストも返すようにした。 インターフェース詳細はdijsktra.h、具体的な使用方法はtest_dijsktra.c参照。 (test_dijsktra.cで辺設定行が多いのは、テスト対…

C言語 ダイクストラ法 ライブラリ

C

使用感は改善の余地ありかも。 インターフェース詳細はdijsktra.h、具体的な使用方法はtest_dijsktra.c参照。 ライブラリ:dijsktra.h、dijsktra.c dijsktra [テスト対象グラフ] [テスト実行結果] (追記) インターフェースにリストを使用するようにしたもの…

簡易正規分布

C

簡易正規分布は一様乱数を足せばよいらしい。rand()は一様乱数を返す。 rand()%10として、0~9の乱数を得ていたのを、 rand()%5とrand()%6で、0~4の乱数と0~5の乱数を足して0~9の乱数を 得るようにする。 random こんな山でよいのなら。

C言語 ビットフラグ操作関数

C

ビットフラグは嫌いだが、操作関数があれば少しは使いやすくなるのだろうか bitFlag

C言語 シーケンス図 自動生成

github.com [背景] C言語のソースからシーケンス図を自動作成するツールが 見当たらなかったので作成した。plantUML用入力ファイルを出力する。 できたファイルをplantUMLで読み込むことでシーケンス図が見れる。 [動作環境] Windows10で動確済み。(どのWind…

C言語 ファイル検索 再帰 ライブラリ

簡単に取り込めるファイル検索ライブラリ。(Windows用) (指定フォルダ配下の、指定拡張子の全フルパスを取得する) エラー処理は未実装。とりあえず動く。 使用者はlist.h, findFile.h内のインターフェースのみ把握しておけば使える。 まずはtest_findFile.c…