0936login:Penguin
2019/03/05(火) 09:34:03.71ID:+7uvSwcfどうもバッファサイズ説に納得がいく説明が付けられないから調査してみたんだどやっぱり違う気がする
根本原因はRegex::exec内とか(影響を調べてないけど他の箇所でも)で
malloc( MAX_TARGET_SIZE ) ;
としてMAX_TARGET_SIZE"バイト"のcharとintを確保してるんだけど
それを受け取ったMisc::asc側ではMAX_TARGET_SIZEの"要素数"の配列として扱ってしまっているのが原因っぽい
結果もちろんサイズは環境依存だけどcharの方は1バイトなんで問題は起きず
intの方は4バイトなのでMAX_TARGET_SIZE/4=8092回めのループを過ぎたところでオーバーフローでメモリ破壊が起きる
実際
MAX_TARGET_SIZE = 16 * 1024,
malloc( MAX_TARGET_SIZE * sizeof( char ) );
malloc( MAX_TARGET_SIZE * sizeof( int ) );
にするとバッファサイズは小さく~変わらないはずだけど落ちなくなる