パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

Windows 11 22H2、Delphi/C++Builder製アプリが日本語変換時にクラッシュ」記事へのコメント

  • 「オプションの診断データを送信する」をオフにすれば収まるって事はユーザの行動情報収集用の処理でホストアプリを巻き込んで落ちてる訳か。
    余計なことの為になんてことを。

    • by Anonymous Coward

      Embarcadero Technologiesの説明見た感じ、Windowsのコンポーネントが想定外の挙動してVCLのコンポーネントが処理できず例外吐いて
      そんなの想定してないアプリがcatchしてなくて死ぬみたいな流れかなあ。

      • by Anonymous Coward

        ライブラリが元々投げることになっている例外はすべて掴むべき。絵投げてきた理由が間違ってる?知らん。

        • by Anonymous Coward

          Win32 APIはそう簡単に例外投げない。出るのはNULLとHRESULTと不具合。

          • by Anonymous Coward

            C言語(C++ではない)向けのインターフェースなんだから例外を投げるわけがない。

            • by Anonymous Coward on 2022年10月18日 21時40分 (#4346171)

              WindowsはOSレベルで構造化例外処理 [microsoft.com]をサポートしてる
              エラーの時に例外を投げるよう指示できるAPIもある


              メモリ割り当て方法の比較 [microsoft.com]

              GlobalAlloc、LocalAlloc、HeapAlloc 関数は最終的に同じヒープからメモリを割り当てますが、それぞれ少し異なる機能セットを提供します。 たとえば、メモリを割り当てられなかった場合に例外を発生するように HeapAlloc に指示できます。

              親コメント
              • by Anonymous Coward

                付け足し。たとえば、Cであっても、アプリケーション設計をひとつしくじれば、ぬるぽとかいくらでも起こる。
                SEGVってやつだが、これはSEHで通知されてくる。キャッチしなければ落ちる。
                Win32は、SEHではなく、エラーコードかNULLで失敗を通知してくる。
                これでは、catch()でエラーを拾いきるって手口が向かないってこと。

              • by Anonymous Coward

                > Win32は、SEHではなく、エラーコードかNULLで失敗を通知してくる。

                それにはたぶん
                1. (タテマエ上)VC++以外のコンパイラーもサポートする必要がある。実際にMinGWはSEHサポートしていなかったような
                2. Win16とある程度のソース互換を取る必要がある(HeapAllocはWin32の新API)
                みたいな要因があると思う。

日々是ハック也 -- あるハードコアバイナリアン

処理中...