スレッドで行う処理の限界 – 固定ページ 2 – プログラミング – Home

スレッドで行う処理の限界
 
通知
すべてクリア

[解決済] スレッドで行う処理の限界

固定ページ 2 / 2

tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 21年前
投稿: 830
 

んぢゃなくて _stprintf_s はバッファオーバーフローしないはずなんだけど。
バッファオーバーフロー検出時の挙動ってどうなんだっけ?
俺は VS2005 使ってないから知らないや。
MSDN2 によれば invalid parameter handler が挙動するとあるけど。

バッファオーバーフロー検出で即死→
正常終了シーケンスを通らないのにリークチェッカ起動→
リークしてる誤報告
なのでは?


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

>_stprintf_sってバッファのサイズを指定するから
>バッファ不足だとしたらすぐにわかるかと思っていた。

>_stprintf_s はバッファオーバーフローしないはずなんだけど。
私もそう思った。

_stprintf_sのtemplate版でないほうで、第二引数で確保しているバッファのサイズ
よりも大きい値を指定するとだめそうだけど。

TCHAR buff[10];
_stprintf_s(buff, 11, _T(%d), 0);

こんなヤツ。

だけど、示されたコードでは大丈夫なはずなんだけれどね、、、
(戻り値として -1 が返ってきそうだけど。)


返信引用
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
 

> んぢゃなくて _stprintf_s はバッファオーバーフローしないはずなんだけど。

御意…orz

# _sは使わないからなぁ。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

うーん、わかんなくなってきたぞ。
_stprintf_sの解説では設定可能な最大文字数とあるんですよね。
で、文字列の最後に'\0'を付加する事も書いてあるんですが、
この最後の'\0'って文字数に含まれてるんですかねぇ?
これが含まれないなら要素数10の配列には9しか設定できない
計算になるような気がするんですけれど。
そうなるとMSDNの使用例はおかしいって話になりますよねぇ。
うーん。(--;


返信引用
固定ページ 2 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました