問題タブ [undefined-behavior]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
542 参照

c++ - 次のコードはUBを呼び出しますか?

次のコードはUBを呼び出しますか?

0 投票する
7 に答える
4496 参照

c++ - new []、ポインターをキャストし、C ++の組み込み型を使用して安全にdelete[]することはできますか?

私のコードには、事実上次のものがあります。

問題のタイプはすべて組み込みであるため、簡単なデストラクタがあります。VC ++では、上記のコードは問題なく機能します。new[]メモリを割り当てdelete[]てから解放するだけです。

C ++で受け入れられますか?それは未定義の振る舞いですか?

0 投票する
1 に答える
173 参照

c++ - nullterminate()ハンドラーは許可されていますか?

VC ++ 7では、次のようにすると次のようになります。

プログラムは、abort()直接呼び出された場合とまったく同じように動作します。これは、デフォルトのterminate()ハンドラーが行うこととまったく同じです。

ステートメントを省略するset_terminate( 0 );と、終了ハンドラーが呼び出されます。したがって、呼び出しはハンドラーをデフォルトset_terminate( 0 )にリセットする効果があるようです。terminate()

この動作はVC++7にのみ固有ですか?set_terminate( 0 )他の実装を呼び出すと、プログラムは未定義の動作になりませんか?

0 投票する
19 に答える
1944 参照

c++ - 未定義の動作をすべての初心者に説明するにはどうすればよいですか?

C++標準が未定義の動作として属性を付ける状況がいくつかあります。たとえば、を割り当ててから、未定義の動作である(ではなく)new[]を解放しようとすると、何かが発生する可能性があります。動作する可能性があり、ひどくクラッシュする可能性があり、サイレントに何かが破損し、時限問題が発生する可能性があります。deletedelete[]

これを説明するのはとても問題があります。彼らは「これが機能する」ことを「証明」し始め(実際に使用するC ++実装で機能するため)、「これで何が間違っている可能性があるか」と尋ねます。そのようなコードを書かないように動機付けるために、どのような簡潔な説明をすることができますか?

0 投票する
1 に答える
2671 参照

.net - ReadToDescendant および/または ReadElementContentAsObject を使用して XmlReader の問題を修正する

私は、通常は非常に優れたオープン ソース プロジェクトであるExcel Data Readerの謎のバグに取り組んでいます。特定の OpenXML .xlsx スプレッドシートからの値の読み取りをスキップしています。

問題はReadSheetRow メソッドで発生しています (以下のデモ コード)。ソース XML は Excel によって保存され、奇妙な動作が発生する空白が含まれていません。ただし、空白で再フォーマットされた XML (たとえば、Visual Studio で [編集]、[詳細設定]、[ドキュメントのフォーマット] に移動) は完全に正常に機能します。

空白を含むテスト データ:

空白のないテスト データ:

問題を示すコード例:

Aは の後に出力され_xmlReader.Read()Bは の後に出力されReadToDescendantCは の後に出力されることに注意してくださいReadElementContentAsObject

空白を含む XML のテスト結果:

空白のない XML のテスト結果:

パターンの変更は、XmlReader の移動ReadElementContentAsObject先または場所に問題があることを示しています。ReadToDescendant

ここで何が起こっているのか知っている人はいますか?

0 投票する
5 に答える
1697 参照

c++ - const オブジェクトの変更が未定義の動作である場合、コンストラクタとデストラクタは書き込みアクセスでどのように動作しますか?

C++ 標準では、最初に宣言されたオブジェクトを変更することconstは未定義の動作であると述べています。では、コンストラクタとデストラクタはどのように動作するのでしょうか?

ここでは、コンストラクターとデストラクタは呼び出し元のコードとまったく同じことを行いますが、オブジェクトを変更することは許可されており、呼び出し元は許可されていません。未定義の動作に遭遇します。

実装の下で、標準に従ってどのように機能するはずですか?

0 投票する
1 に答える
3495 参照

c++ - 参照により非定数の一時的なものを投げる

非const参照によってスタック上に構築されたオブジェクトをtry-blockにスローし、それをキャッチして変更してから、別のcatchブロックを参照してスローすることに問題はありますか?

以下は私が参照しているものの短い例です。

これにより、e。何にジャンクが含まれる可能性がありますが、e。どこにそのまま残る可能性がありますか?例:
e.where is "123"
e.get()は、ヌルバイトに到達するまで、大量のガベージデータを返します。

0 投票する
6 に答える
885 参照

c - Cで文字列を反転する

私はこれが何千回も尋ねられたことを知っていますが、私のコードでエラーを見つけることができません。誰かが私が間違っていることを親切に指摘できますか?

0 投票する
2 に答える
168 参照

c++ - 次のコードは未定義の動作を呼び出しますか?

0 投票する
3 に答える
618 参照

c - 割り当て評価の順序 (最初のコンパイラ バグを見つけましたか?)

このコードには興味深いバグがあります:

ほとんどのコンパイラでは、上記のコードにより、それぞれの配列内のすべての構造体の「値」フィールドが 1 に設定されます。ただし、ある特定のコンパイラ (xcc と呼びましょう) では、struct_array1 の構造体が正しく初期化されません。「値」フィールドはすべての構造体で 0 に設定されていますが、これにはちょっと驚きました。

次のコード スニペットは、すべてのコンパイラで期待どおりに機能します。

さて、私は完全にここから離れていますか、それとも問題のあるコンパイラ「xcc」が単にバグを表示しているだけなのでしょうか?

最初のコード スニペットで実装固有の動作を示すものは見つかりません。私が理解していることから、後置インクリメントは割り当てよりも優先され、割り当ては右から左に評価されるべきです。最初のコード スニペットは、少し読みにくいことを除けば、おかしなことは何もないはずです。