2024:07:04
文書の過去の版を表示しています。
7/4日記
プログラム
- 残り実装が必要そうなやつ
- ファイル読み込み(最初は同期、可能なら非同期読み込み)
まずは入力ストリームで読み込みを実装済み。 - Miniscriptプログラムのコンパイル
Interpreterを定義済み。読み込み準備もできた。 - 組込み関数の追加
- コンパイルしたデータとサウンドの譜面を紐づける実装
- ADSR、フィルタの実装
プログラム2
- 今日はバグと格闘していた。
- いや何がって、以下の対応だよ。
- スクリプト言語で使うString型とC++のstring型が別物。内容に少し相違があるため違いを理解するのに時間がかかった。言語に紐づいているため、下手に除去もできないけど、かと言って普通のstring型と使い勝手が違うので、どうしても両方使う必要がでてきてしまった。
- スクリプト言語のログ出力のタイミングがおかしく、Printf等の関数を実行しないとログ出力がされないという困った仕様。更に言語のVMに関するログがインスタンス利用時に消されない仕様なので、将来的にメモリバカ食いするのでは?と思ってる。実行するVMはメモリ上に作成廃棄にしないと駄目かもしれない。(言語の改造が必要になりそう)
- これはどちらのstring型もそうなんだけど、clearやTrimを行っても即座にデータが消えるわけではない(ウィークポインタとかつかってんだろか)ので、staticでもたせてるstringクラスを呼び出そうとしてうまく更新がされないことが発覚したため、メモリ確保消去を自分で行うことにした。
- そもそもの話として、Addメソッドを使ってるとうまく開放してくれないケースがあるみたいなので、できる限り全削除等でデータが跡形も残らないようにして対応した。List<string>はclear()でうまく削除してくれたが、string単体だと削除してくれないケースもあるもよう。よくわからん。
- ということで久々に原因が分かりづらいバグで仕事が終わったあとずっと対応してた。5-6時間くらいデバッグしたりサードのライブラリの中身をハックしたりstringの仕様について調べたりしてた。
プログラム参考資料
2024/07/04.1720102042.txt.gz · 最終更新: 2024/07/04 23:07 by machiaworx