[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 09/07 04:05 / Filesize : 285 KB / Number-of Response : 1021
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Win32API質問箱 Build125



1 名前:デフォルトの名無しさん [2019/02/27(水) 15:09:08.64 ID:6ExXwgQU.net]
Win32APIについての質問はこちらへどうぞ。

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。
 英語版( msdn.microsoft.com/en-us/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで

■過去スレ
Win32API質問箱 Build124
mevius.5ch.net/test/read.cgi/tech/1510395780/
Win32API質問箱 Build123
mevius.2ch.net/test/read.cgi/tech/1475897582/
Win32API質問箱 Build122
echo.2ch.net/test/read.cgi/tech/1451988219/
Win32API質問箱 Build121
echo.2ch.net/test/read.cgi/tech/1438695290/
Win32API質問箱 Build120
echo.2ch.net/test/read.cgi/tech/1428570962/

■関連スレ
Visual Studio 2019
mevius.5ch.net/test/read.cgi/tech/1548765663/
Visual Studio 2017 Part6
mevius.5ch.net/test/read.cgi/tech/1528645068/
【C++】 DirectX初心者質問スレ Part41 【C】
mevius.5ch.net/test/read.cgi/tech/1521786252/

281 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 12:49:50.53 ID:IRP8OWhI.net]
昔、同僚にクラス設計やコメントの書式にやたら拘る奴がいたの思い出した
綺麗なソースコード書いてたけど、まったく動かないゴミですぐ職場から消えたわw

282 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 12:54:34.90 ID:NSArXc0X.net]
そういう人って恋人も見た目重視にしてそう
ソースコード(見た目)って意味で

283 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 17:47:19.57 ID:+RoIj51L.net]
>>276
所詮決め事なんで>>272の言うとおり好きにしてくださいって話だけど
良くありがちなのは



284 名前:<Wャーバージョン.マイナーバージョン.ビルドバージョン

みたいな
メジャーバージョンはアーキテクチャとかUIの大きな変更とかユーザから見ても
変更されたことが分かるような場合
マイナーバージョンは単機能追加とかバグ修正などユーザから一見分からない
ような軽微な変更の場合
ビルドバージョンは作業途中の状態を管理するための連番や単一作業の区切りを
管理するための連番とか
みたいな感じで自分で目的を決めて使うしかないよ
他には作業の効率管理のためにさらにビルド回数を最後に付けてコンパイルする
たびに番号加算していくとか
後はOSのバージョンごとにパッキングを変える場合はPRODUCTOVERSIONと
FILEVERSIONを関連性は持たせるけど個別に管理するとか

>>273
あれは企業的に仕事をしてますよアピールなので残念なのは経営層か
投資家かな
バグ修正はマイナーバージョン、それ以外はすべてメジャーバージョンの修正に
することですごくたくさん仕事してますよがアピールできるので
[]
[ここ壊れてます]

285 名前:デフォルトの名無しさん [2019/09/13(金) 17:52:57.53 ID:xaEp9cr2.net]
>>273 さんはそんなこと言われなくても判ってて書いてるだろ

286 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 23:06:09.82 ID:ZW8mwhnp.net]
INVALID_HANDLE_VALUEってマジで糞だよな
うっかりしてると失敗したときNULLが返ってくるって勘違いするというか
ボーッとしてるとそういうコード書いちまうことがある
大概のAPIでは失敗したときNULLが返ってくるってのもある
混在いやん

287 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 23:10:11.55 ID:ZW8mwhnp.net]
あと、なんでINVALID_HANDLE_VALUEが必要になったのか技術的な背景が気になる
普通に0を返しとけばいいじゃん、って思うよね
他のAPIがそうなってるんだから


288 名前:デフォルトの名無しさん mailto:sage [2019/09/13(金) 23:49:45.81 ID:xZuGkTzd.net]
お前だけじゃボケ

289 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 00:13:31.65 ID:n9TGnnZi.net]
>>281
どんなAPIでも最低限の仕様確認してから使えよ



290 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 03:06:20.87 ID:BTqGkHHG.net]
しかしそれらを超越した次元で総合的に判断してやっぱりINVALID_HANDLE_VALUEは糞
必要ないからな

291 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 03:09:13.59 ID:ztnZ3eZq.net]
The Old New Thingにあったな
https://devblogs.microsoft.com/oldnewthing/20040302-00/?p=40443

292 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 05:42:23.89 ID:MJsGg5EL.net]
>>284
それは論点が違う
マジで糞かどうかだろうが
285はちゃんと自分なりの見解を言っているし
286は情報提供している
お前だけとかくだらんことしか言わんボーガスとは次元が違う

16bit時代は低コストに拘るあまり
色々とアホなことをしていた
その名残を糞って言えないやつも糞だ

293 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 10:06:00.92 ID:TUFMAlcF.net]
ComboBoxはCB_ERRがある
ListBoxはLB_ERRがある

ListViewはただの-1で定義無し
LV_ERRじゃないのはなんで?

294 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 11:02:16.25 ID:BTqGkHHG.net]
>>286読んで思い出したが
そうそうHANDLEのスマポ作るときにウザいんだよな
既定の初期値を何にしておくかって問題があるからな!
ああ糞だ

295 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 11:26:55.16 ID:BTqGkHHG.net]
後HANDLEのスマポのデストラクタでCloseHandleするとき
失敗したり何も入ってなかったり
無効なハンドルの場合はCloseHandleしないようにする場合も嫌らしい
無効なハンドルを表す値が二つ有るからな!!
if( handle && handle != INVALID_HANDLE_VALUE ){ ::CloseHandle( handle ); }
と書いてしまいたいところだが、本当にこれでよいのか?
それかCloseHandleに無効なハンドルを渡したときは何もしないことを期待して
if文なしで単に::CloseHandle( handle );とだけ書くか
しかしCloseHandleに無効なハンドルを渡したときの動作はMSDNには書かれてないんだよな
まぁ何もしないと思うが

296 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 11:39:00.01 ID:BTqGkHHG.net]
ああ今調べたら、CloseHandleに無効なハンドル渡したら
GetLastErrorが汚染されるらしいな

297 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 11:51:46.43 ID:U/7wJfIU.net]
初期化と開放とかのインターフェース作って、そのインターフェース派生でAPIアクセスしてるな
その手のはAPI直接叩くソース書くと後からコーディングミスに気付いても修正困難になるしバグの元

298 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 13:23:12.69 ID:i3tDL1ol.net]
>>288
前者2つはOS基本機能、後者はコモンコントロールというオプション
という違いから歴史と立ち位置が違う
ついでに言えば設計から全然違うんで、定義がないのは不思議ではない

299 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 13:47:20.57 ID:U/7wJfIU.net]
どれもコモンコントロールだよ
歴史的には昔はリストビューがコモンコントロールじゃなかったかもしれないが分からない



300 名前:デフォルトの名無しさん [2019/09/14(土) 14:05:12.55 ID:mIZ3m5oP.net]
昔のWindowsAPIはHANDLEとポインタが別物だったのを知らん人がいるのか

301 名前:デフォルトの名無しさん [2019/09/14(土) 14:06:49.93 ID:mIZ3m5oP.net]
>>288
ポインタが奇数になるはずはない(キリっ
だから奇数の空間を全て別のオブジェクトに
おれ天才じゃね?って糞言語が日本にはある

302 名前:デフォルトの名無しさん [2019/09/14(土) 15:56:30.20 ID:6R0WtlX/.net]
フリーのリソースエディタとAPIでGUIプログラムを作っているけど、
もう時代遅れなのかな。

みなさんは、GUIプログラムはどうやって作っていますか。

303 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 16:05:19.86 ID:BWRFT45i.net]
リソースエディタなんぞ使わず全部apiからテキストエディタ上で
数値指定で作ってるんでそんな自分よりかは進んでるぞ
まあ今の時代ならvisual studio使うのが普通だろうね

304 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 16:05:25.06 ID:YkcbTkKM.net]
20年前から来たのかな?

305 名前: mailto:sage [2019/09/14(土) 16:49:47.51 ID:1pj+LkZL.net]
>>297
cygwin/mingw64 でコンパイル・リンクできるよう、リソースは手書きですね…

306 名前:蟻人間 mailto:sage [2019/09/14(土) 16:58:44.72 ID:0f+SL6BM.net]
俺は自作のリソーエディタ使ってるけど。MinGWでもVC++でもビルドできるよ。

307 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 17:18:22.21 ID:i3tDL1ol.net]
>>294
コモンかどうか名前はさておき、リストビューは明確にcomctl32を使うような
宣言とリンクがないと使えないでしょ
リストもコンボはこいつの範疇ではない

308 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 19:04:46.82 ID:TUFMAlcF.net]
WinUser.h
 ComboBox CB_ERR
 ListBox LB_ERR
CommCtrl.h
 ListView関係のメッセージやマクロ

この違いは歴史関係って事?
LVM_INSERTITEMが失敗した場合は-1が返るけど
LV_ERR(-1)とするのはおかしい?

309 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 19:37:03.95 ID:5CB9SZmv.net]
作者の気持ちを想像して答えなさいスレッド



310 名前:デフォルトの名無しさん [2019/09/14(土) 21:33:59.27 ID:FV8dJ/wR.net]
Windowsで.NET使わずにC/C++とWin32APIでPerl互換の正規表現を使ったプログラムを作る場合、
従来はboost::regexやPCREなど別途ライブラリが必要だったけど、Windows10以降はICUの正規表現を使えるようになった。
ただし、可変長文字列を扱うUnicodeStringクラスがヘッダーファイルicu.hから削除されているので、std::wstringなどで代替する必要がある。

311 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 21:43:24.62 ID:EnCOcX5P.net]
ListViewはWindows95で追加されたコントロール

312 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 22:37:17.04 ID:bBqfD384.net]
昔の事は多少は多目に見てやれよ。今みたいにSNSが活発じゃないし、githubで他人のソースも簡単に見れるわけしゎゃない。知見を共有しづらい時代なんだから

313 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 22:44:48.45 ID:BTqGkHHG.net]
システムハンガリアンという糞も生みだしたしな

314 名前:デフォルトの名無しさん mailto:sage [2019/09/14(土) 23:54:23.09 ID:EnCOcX5P.net]
ハンガリアン記法自体はBug捕り等に有効だったのに

315 名前:デフォルトの名無しさん [2019/09/15(日) 01:22:53.14 ID:84ndTw+e.net]
dwは長さが一番揺らいでると思う

316 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 04:13:59.48 ID:oAEy9Na1.net]
Standard Control
Common Control

317 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 07:17:29.58 ID:o13gcpb2.net]
>>309
システムハンガリアンは違うし、なんで過去形なんだ?

318 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 10:17:05.74 ID:WyNEQ0+k.net]
>>306
そうなのか

他の人もありがとう

319 名前:デフォルトの名無しさん [2019/09/15(日) 12:35:24.64 ID:tu3q64lr.net]
unix の execlp だと pid は変化しませんが、
Win32API の execlp とか _execlp とかだと processID は変化してしまうようです。

CreateProcess が呼ばれているからだと思いますが、
Win32API の execlp とか _execlp とかで変わったあとの processID を知る方法はありますか?
(起動された側で getpid() で判るのですが、そっちではなくて元の processID を握ってる方からのリンクが切れて困ってます。)



320 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 18:08:42.80 ID:jdtp5u68.net]
>>297
俺はリソーススクリプト直叩き
MSDNに詳しい情報乗ってるし、英語だけど
プログラマなら大体わかるよ、翻訳サイトを使ってもいいしね

そして、ライブラリ化しといて次から簡単に使えるようにしとく
バージョン情報とかも関数やクラスにして簡単に使えるようまとめとけば便利
GUIは.NETがクラス化の良いお手本になるよ

321 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 19:39:40.56 ID:WzV8SEFI.net]
VS使わない縛りなの?

322 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 19:55:06.55 ID:G+rzyOKL.net]
>>314
> Win32API の execlp とか _execlp
そもそもexeclpとかはwin32apiじゃなくて単なるライブラリだよ
とりあえずざっとソース見る限りではpidを返す方法はないみたい(インターフェースもないしね)
自分で実装するしかないと思う

323 名前:デフォルトの名無しさん mailto:sage [2019/09/15(日) 23:50:00.36 ID:jdtp5u68.net]
>>316
VSは使ってるよ、昔は無料のエディションには
MFCもリソースエディタも付いてなかったからな

趣味でやってるから問題なし
フリーのリソースエディタを入れるか迷ったこともあったけど
直叩きで行けるしまあいいかと

324 名前:デフォルトの名無しさん mailto:sage [2019/09/16(月) 00:47:21.27 ID:iDbWACrZ.net]
それぐらい普通、何でもないよ
俺なんかメニューバーとかスクロールバーとかツールバーとかリストビューとか
こまごましたUIパーツ、全部DirectXで一からフルスクラッチで書いたし
4K画面だとリストビューとか動作がカクカクになるから使い物にならんよ
フォントの描画が重いみたい

325 名前:デフォルトの名無しさん mailto:sage [2019/09/16(月) 00:49:05.96 ID:B+hfHu5+.net]
結構前からリソースエディタは無料版VSでも入ってたろ

326 名前:蟻人間 mailto:sage [2019/09/16(月) 01:47:28.54 ID:cPhlmIua.net]
後世のために書いておくが、Visual StudioのリソースコンパイラーはUTF-8の扱いに致命的なバグがあって、最悪の場合、文字化けする。あれはANSIコードページかUTF-16で使うものだ。

327 名前:デフォルトの名無しさん [2019/09/16(月) 10:51:40.64 ID:7yboD6Fj.net]
不定期
https://stefansundin.github.io/xn_resource_editor/

328 名前:デフォルトの名無しさん mailto:sage [2019/09/16(月) 12:37:37.02 ID:IB1jvVpV.net]
>>321
コンパイラーの問題だからエディターは何でもいいんじゃね
って話ではないの?

329 名前:デフォルトの名無しさん mailto:sage [2019/09/16(月) 17:55:40.47 ID:+LXKkUCe.net]
そもそもリソースファイルにUTF8が使えるなんて知らなかったわ



330 名前:デフォルトの名無しさん mailto:sage [2019/09/16(月) 17:57:32.41 ID:Y7LS5TKS.net]
いや使えないでしょUTF-8

331 名前:蟻人間 mailto:sage [2019/09/16(月) 18:32:35.66 ID:cPhlmIua.net]
MinGWのwindresというコンパイラーなら、pragmaでコードページ指定すればUTF-8が使える。
Visual Studioのrcは前述の通りUTF-8読み込みにバグがある。

332 名前:デフォルトの名無しさん [2019/09/16(月) 18:40:12.76 ID:OCMqZYFH.net]
RisohEditorってどうなん

333 名前:蟻人間 mailto:sage [2019/09/16(月) 18:43:49.21 ID:cPhlmIua.net]
RisohEditorはUTF-8とUTF-16のソースが扱える。UTF-16の入力は、独自のプリプロセッサでUTF-8に変換している。

334 名前:蟻人間 mailto:sage [2019/09/16(月) 18:46:27.85 ID:cPhlmIua.net]
VSのRCの文字化けバグについては
https://developercommunity.visualstudio.com/content/problem/384705/visualstudio-v1590-resource-editor-using-utf-8-bom.html
こちらで。まだ直っていない。

335 名前:デフォルトの名無しさん mailto:sage [2019/09/16(月) 18:52:28.03 ID:OHfOAVfs.net]
リソースファイルはBOMつきUTF-16LEでいけるでしょ。

336 名前:デフォルトの名無しさん mailto:sage [2019/09/16(月) 19:26:31.76 ID:dTSbudTn.net]
重箱。UTF-16LE/BEと呼ぶ場合はBOMを付けてはならないらしい。

337 名前:デフォルトの名無しさん [2019/09/16(月) 19:56:19.89 ID:OCMqZYFH.net]
UTF-8 も BOM 付けちゃいけないんだろ

338 名前:デフォルトの名無しさん mailto:sage [2019/09/16(月) 20:21:16.53 ID:dTSbudTn.net]
UTF-8なら禁止はされていない。

339 名前:デフォルトの名無しさん [2019/09/17(火) 00:30:59.73 ID:J+q8D2Xe.net]
>>331
理解が間違っている。

「BOMつきUTF-16LE」と「UTF-16LE」は別のものであり、どちらも存在する。
「UTF-16LE」にBOMがついていないからこそ「BOMつきUTF-16LE」という表現が成り立つ。
小倉トーストとトーストが別のものであることと同じであり、トーストに小倉餡がついていないからこそ小倉トーストが成り立つ。



340 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 02:12:33.57 ID:GJd5TLi7.net]
粒餡と餡子が別のものであることと同じであり、
餡子に粒が入ってないからこそ粒餡が成り立つ
ってことですね

341 名前:デフォルトの名無しさん [2019/09/17(火) 02:53:38.24 ID:J+q8D2Xe.net]
名古屋のモーニングにゆで卵がついたからといって、モーニングでなくなるわけではないのだ。
無論、ゆで卵がつかないモーニングもある。ゆで卵がつこうがつくまいがモーニングなのだ。

342 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 03:09:38.39 ID:F6p74H2h.net]
名古屋とか言う異世界の話はやめようぜ
意味が分からん

343 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 18:03:14.36 ID:IoM9hprN.net]
名古屋が4次元?

344 名前:デフォルトの名無しさん [2019/09/17(火) 18:08:21.64 ID:+bGUkqkJ.net]
みそかつ
みそ煮込みうどん
高血圧

345 名前:デフォルトの名無しさん mailto:sage [2019/09/17(火) 18:36:53.76 ID:TzGpBMAj.net]
段ボール入り肉まんが人によってはバレないが、やはり人間的にはエラーが出やすい
そういうことだな

346 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 14:01:12.80 ID:+0ud2Fjw.net]
Caretの点滅間隔について質問です

自アプリがアクティブの時のみ点灯(点滅間隔にUINT_MAXを指定して擬似的に)
自アプリが起動中はWM_SETFOCUSでON(点灯)に、WM_KILLFOCUSでOFF(元の間隔)にする事はできましたし他のアプリにも影響はありません
ですが自アプリが終了したら他のアプリでもONの状態になってしまいます
メッセージを追ってみると
WM_CLOSEでDestroyWindow
→WM_KILLFOCUSでOFFへ
→プロセスが終了
になっていたので自アプリ内で再度ONになっている事はないです

これはどういう事ですか?

347 名前:デフォルトの名無しさん [2019/09/18(水) 19:04:24.43 ID:L8SHYgAR.net]
WM_CLOSE
→DestroyWindow (hWnd 失効)
→WM_KILLFOCUSでOFFへ (hWnd 違いで無視)
→プロセスが終了

かな
知らんけど

348 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 19:30:38.13 ID:+0ud2Fjw.net]
ありがとうございます

引数は間隔のみですが一応DestroyWindow直前でOFFにしてみても同じ結果でした

349 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 19:31:59.76 ID:Dukdxvvo.net]
完成品には道のり遠くw



350 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 19:37:10.52 ID:+0ud2Fjw.net]
Getで値を見てみるとONの状態になってしまうのではなく
アプリが終了したら間隔が0xfeeefeeeになってしまう
でした

言い直しますと
System設定の500(ミリ秒)からUINT_MAXではなく200へ変更するようにしても
アプリを終了したら間隔が0xfeeefeeeになってしまう
です

351 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 19:39:32.20 ID:Dukdxvvo.net]
たまねぎスレw

352 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 19:57:32.75 ID:u5s3196f.net]
方法は何でもいいけど、例えばクリックしたらキャレット処理を終了→その後アプリ終了でどうなるかやってみ
問題が絞り込めるでしょ

WM_CLOSEで終了処理が思ったように動いてないってのはありがち

353 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 20:00:53.08 ID:Dukdxvvo.net]
はい完成品なしw

354 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 20:07:36.38 ID:+0ud2Fjw.net]
>>347
それも既に試しましたが同じ結果です
>>341でも書きましたがメッセージを追ってWM_CLOSEが正常な事も確認済みです

355 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 20:10:21.94 ID:Dukdxvvo.net]
はいBASICからやり直しw

356 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 20:10:41.11 ID:+0ud2Fjw.net]
>>347
途中送信すみません
設定してもいない値0xfeeefeeeになるので
間隔はSystemと同じ値(500)にSetするだけにしてみても同じ結果でした

357 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 20:12:42.36 ID:rjYHNvyN.net]
0xfeeeってデバッグの時の初期化されてない奴の値じゃないっけ
終了時に数値の参照先おかしくなってるとかかな

358 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 20:31:05.81 ID:VIgnmm9s.net]
「あなたのアプリがWM_CLOSEで0xfeeefeeeにしてる」のは明白でしょ
0xfeeefeeeって特別な値よ、ググってみそ

359 名前:蟻人間 mailto:sage [2019/09/18(水) 20:50:12.78 ID:d3y9L0GY.net]
DestroyCaretしてないとか?



360 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 20:51:02.69 ID:doMp/Sm3.net]
DEBUGビルドのランタイムで
newからのdelete や malloc からの free の後に 確保領域の内容を0xfeee で埋める

ポインタを開放した後に指し先の内容値を取得し、セットしちゃってるんでないの?

361 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 20:51:25.32 ID:nSTUFOvJ.net]
速度設定するとこにトレース出力でもおいて、まずはほんとに意図しないタイミングで呼ばれてないのかチェックだな

362 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 20:54:27.99 ID:GIOjMe2C.net]
イベントを2回通っていて、認識できてないとか。

363 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 21:32:56.42 ID:+0ud2Fjw.net]
>>353
キャレット関係の終了処理をWM_LBUTTONDOWNのタイミングに変更した時に
WM_CLOSEの方のキャレット関係の終了処理はコメントアウトしました

>>354
してもしなくても同じ結果になります

>>355
値の指定をハードコードにしても同じでした

>>356-357
重複した呼び出しなども無かったです

364 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 21:52:22.59 ID:8Lx1p1Xb.net]
Releaseモードで検証したら

365 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 21:58:28.43 ID:rjYHNvyN.net]
別のとこでメモリ壊してるんかな
その部分だけの最小コード書いてみては
それでもなるなら手に負えない感じが

366 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 22:24:23.19 ID:Ei+Tp6td.net]
>>352-353, >>355
0xfeee なんてパターンあったっけ?
0xFDFDFDFD No man's land (normally outside of a process)
0xDDDDDDDD Freed memory
0xCDCDCDCD Uninitialized (global)
0xCCCCCCCC Uninitialized locals (on the stack)
の4パターンしか知らんかったわ
https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-6.0/aa260966(v=vs.60)#what-exactly-do-you-mean-by-failure

367 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 22:31:02.62 ID:rjYHNvyN.net]
なかったっけ
うろ覚えで書いたから間違ってたかな

368 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 22:48:37.86 ID:u5s3196f.net]
0xfeeefeeeでググれ

369 名前:デフォルトの名無しさん mailto:sage [2019/09/18(水) 22:51:58.57 ID:u5s3196f.net]
>>358
> キャレット関係の終了処理をWM_LBUTTONDOWNのタイミングに変更した時に
> WM_CLOSEの方のキャレット関係の終了処理はコメントアウトしました

マウスクリックで終了してる「はず」なのに終了してないなら、そもそもキャレット処理を
全く走らせてなくても問題が再現する「はず」

でもその場合は問題ないってなら、やはり終了処理に何かある



370 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 04:56:26.34 ID:WgtBHfjG.net]
>>363
お前がググれよw

371 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 08:37:27.80 ID:55mEbAq6.net]
>>361
new -> delete -> 値が0xfeeefeeeに

もしnewしたクラスのメンバ変数が値を保持して間隔設定してるなら
delete後に0xfeeefeeeなるよ
クラスポインタをdeleteしてからNULLにしたらエラーになるはず

こんな感じじゃないかな

WM_CLOSEで(deleteしてから)DestroyWindow (クラスポインタとメンバ変数の値が0xfeeefeeeに)
→WM_KILLFOCUSでOFFへ (OFFにする時に参照してるメンバ変数が0xfeeefeee)
→プロセスが終了

でもハードコードでもなるみたいだから違うかも?

372 名前:デフォルトの名無しさん [2019/09/19(木) 09:42:21.55 ID:BhEGNWlU.net]
unix の pipe は双方向だと思うのですが
win32api の pipe (namedpipe ではない方) は一方通行なんでしょうか?
先生なんとかなりませんか?

373 名前:デフォルトの名無しさん [2019/09/19(木) 09:45:58.80 ID:VunEY3BQ.net]
WM_CLOSE

WM_DESTROY

374 名前:デフォルトの名無しさん [2019/09/19(木) 09:51:38.16 ID:VunEY3BQ.net]
ああ
WM_QUIT
かな

375 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 10:17:38.29 ID:nEj2AKuG.net]
>>367
UNIXも一方通行では

376 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 10:35:55.09 ID:WgtBHfjG.net]
>>366
間隔設定がよくわからんが

class C { int a; };

auto x = new C();
delete x;

ってやるとxのポイント先が0xddddddddになるんだが…
Visual Studio Express 2017, 15.9.16

377 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 12:34:19.77 ID:WgtBHfjG.net]
>>366
書き忘れたけど当然デバッグビルドな
ついでにライブラリのソース追っかけたけどパターンはバイト単位に設定されてるので0xfeeeなんてパターンは無いと思うよ

378 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 16:05:31.90 ID:NIaCYNJC.net]
>>365
どこのgoogle使ってんの?

>0xfeeefeee を検索するとHeapFree で処分された後のヒープ領域がこの値で埋められている、とわかる。 ということは「処分済みヒープへのポインタを誰かが使っている」ということだ。

なお、正解かどうかは論じてないので悪しからず

379 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 16:41:49.39 ID:cbyVF/Zh.net]
解放バッファの埋めパターンは、ライブラリが自力でセットするものなの?



380 名前:デフォルトの名無しさん [2019/09/19(木) 17:15:02.02 ID:BhEGNWlU.net]
-D_DEBUGで自動化やろ

381 名前:デフォルトの名無しさん mailto:sage [2019/09/19(木) 18:06:22.20 ID:NIaCYNJC.net]
とりあえず>>373の検証
100バイトHeapAllocして適当にa~zの文字書き込んでHeapFreeの前後でダンプ取ったけど、
0xfeeefeeeが入ることはなかったな

debug版







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<285KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef