VC++2005以降のnew T[x]はsizeof(T) * xのオーバーフローをチェックするので
いちいちsizeof(DWORD)で割らなくて宜しい
と言いたいのでは?
わざわざエラーリスク背負わなくても
>>892で十分
エラーリスク(笑)
ここの住人は簡単な話題には積極的に突っ込みますよ
>>955 はあ?
if(width==0 || height==0 || (SIZET_MAX/width) < height) {
こう書いたらwidth*heightはオーバーフローしないよ?
(割と最近登場した)intsafe.hも使おうよ。
960 :
945:2010/11/08(月) 00:42:04
>>951 何に対してのオーバーフロー対策?
width、height?
俺も
>>957でいいんでね?と思ってるから、sizeof(DWORD)で
割る理由が分からないのだが。。。
962 :
945:2010/11/08(月) 00:43:44
×:width、height?
○:width*height?
訂正
おいお前らAPIの話をしろ
widthやらの数値型の範囲に収まればいいんだからDWORDのサイズは関係ないよね
あとはきれいにnewが失敗してくれる
文字を使った不等式は中学校の範囲か
とりあえず
>>945がリア小じゃなかったら日本の未来は終わりだ
size=width*heightとしてsizeof(DWORD)*sizeがオーバーフローする事は分からんのか?
968 :
945:2010/11/08(月) 00:52:55
>>967 つまり、newで確保したメモリサイズの保持内部変数がオーバーフローするって事でおk?
こいつ真性の馬鹿か?
width=height=40000でも代入して計算してみろよ
まあいろんな前提もかかずにあの式だけじゃあ憶測も飛ぶわな
そもそもwidthはintなのかint64なのかで話が違っても来る
こんな未定義状態で議論するもんじゃないよ
しかも
>>891は悪い例で出てるんだ。解釈できたところで威張っても仕方なかろう
971 :
945:2010/11/08(月) 01:05:44
ん?
40000*40000=1600000000=5F5E1000 < SIZET_MAX(FFFFFFFF)
で、この時点でオーバーフローはしてないよな。
で、なんで
SIZET_MAX/sizeof(DWORD) = 3FFFFFFF
と比較してるんだ?と質問してるのだが。
>>970 はぁ?
>>891は良い例だろ
>そもそもwidthはintなのかint64なのか
SIZET_MAXを割ってるんだからsize_tと等価かそれより小さい符号無し整数型なのは読み取れるだろ
無能が多すぎるぜ…
あ
>>971 width=height=0x9C40
width*height=0x5F5E1000
width*height*sizeof(DWORD)=0x17D784000 ←SIZET_MAX=0xFFFFFFFFだとオーバーフロー
もう来るなぼけ
>>972 悪い例だよ
こんなのを書いてたら君、落第するよ
977 :
945:2010/11/08(月) 01:19:58
>>974 >width*height*sizeof(DWORD)=0x17D784000 ←SIZET_MAX=0xFFFFFFFFだとオーバーフロー
だから、「何が」オーバーフローするのか書けよ。
画像のサイズを扱ってるならそれぞれ10000超えたら怪しいし、
width*heightが1000万超えたあたりからちょっと怪しいとか、
そういう判断は付くだろ。
オーバーフローとかそんなこと言ってる以前の問題だ。
常識で考えろ。
981 :
デフォルトの名無しさん:2010/11/08(月) 01:25:44
オーバーフローあげ
SIZET_MAX = 0xFFFFFFFF
sizeof(DWORD) = 4
width = 0x3FFFFFFF
height = 0x2
こうした場合の動作は正しいのか
まだ分かってないやつがいるw
984 :
945:2010/11/08(月) 01:34:02
>>978 間違えた。
sizeof(DWORD) をかける必要は何?
最初からこれの意味が分からないのだ。
そろそろ
次スレ
たてたほうがいいとおもう
イラネ
989 :
945:2010/11/08(月) 01:44:53
>>985 で、要求したら何がオーバーフローするの?
width*height > SIZET_MAX/sizeof(DWORD)
の場合、
new (std::nothrow) DWORD[width*height];
が単にメモリ確保に失敗するだけ?
new x[y] はコンパイラが operator new[](sizeof(x)*y) に展開しているのを知らないのか。
>>989 アセンブリリスティングとか見たことないの?
そんなレヴェルでC++を使ってるなんて信じられない
993 :
945:2010/11/08(月) 01:57:35
抽出結果:
>アセンブリリスティング
>レヴェル
ちょっとトイレ
とりあえず 945 は今すぐ C++ から卒業しなさい。
以上、チンパンジー並みの脳味噌を持つ
>>945とそれに群がる乞食のショーをお送りしました。
では、次スレでお会いしましょう。
999 :
945:2010/11/08(月) 02:05:22
釣れた釣れたw
お
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。