んぢゃなくて _stprintf_s はバッファオーバーフローしないはずなんだけど。
バッファオーバーフロー検出時の挙動ってどうなんだっけ?
俺は VS2005 使ってないから知らないや。
MSDN2 によれば invalid parameter handler が挙動するとあるけど。
バッファオーバーフロー検出で即死→
正常終了シーケンスを通らないのにリークチェッカ起動→
リークしてる誤報告
なのでは?
>_stprintf_sってバッファのサイズを指定するから
>バッファ不足だとしたらすぐにわかるかと思っていた。
>_stprintf_s はバッファオーバーフローしないはずなんだけど。
私もそう思った。
_stprintf_sのtemplate版でないほうで、第二引数で確保しているバッファのサイズ
よりも大きい値を指定するとだめそうだけど。
TCHAR buff[10];
_stprintf_s(buff, 11, _T(%d), 0);
こんなヤツ。
だけど、示されたコードでは大丈夫なはずなんだけれどね、、、
(戻り値として -1 が返ってきそうだけど。)
> んぢゃなくて _stprintf_s はバッファオーバーフローしないはずなんだけど。
御意…orz
# _sは使わないからなぁ。
うーん、わかんなくなってきたぞ。
_stprintf_sの解説では設定可能な最大文字数とあるんですよね。
で、文字列の最後に'\0'を付加する事も書いてあるんですが、
この最後の'\0'って文字数に含まれてるんですかねぇ?
これが含まれないなら要素数10の配列には9しか設定できない
計算になるような気がするんですけれど。
そうなるとMSDNの使用例はおかしいって話になりますよねぇ。
うーん。(--;