パスワードを忘れた? アカウント作成
505356 journal

hixの日記: 境界関係を大いに語る

日記 by hix
エンディアン嘘付かない...ではなく、アライメント境界に引っかかるのである。
任意の個数の終端付き文字列の連続を複数個連結して格納するという使い方をしていて、例えばこんな感じ。

19, "str1-1", "str1-2", '\0', 29, "str2-1", "string2-2", "str2-3", '\0', 0

19とか、29とか言うのは、size_t型で、各固まりのバイト長(数値自身のバイト長も含む)を表す。
x86系なら問題ないが、ARMだとダメ。最初の19は問題ないけど、次の29が奇数バイトから始まるから。
あと、malloc()を拡張していて、メモリブロックの前後に破壊検知用の構造体を置いていたんだけど、そこにも unsigned int のメンバがあったらダメだった。
確保するメモリサイズが偶数なら問題無いが、奇数だと落ちる。タチ悪い(いやまぁ、いきなり奇数バイトを確保したんで発見は早かったが)。

泣きながら改修中。

回避方法その一

...ARMは嫌いだ。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

計算機科学者とは、壊れていないものを修理する人々のことである

読み込み中...