問題タブ [dangling-pointer]

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 投票する
1 に答える
160 参照

c - Reallocの失敗後、オブジェクトのぶら下がり警告が無料で表示されます

安全な文字列検索のために関数を完成させており、コンパイラの警告を上げて、コードのいずれかがフラグを立てているかどうかを確認することにしました。

現在、PellesCIDEで次のコンパイラ警告を受け取っています。

これが私の関数です(コードを読む前に質問全体を読みたい場合は、以下を読んでください):

strぶら下がっているかもしれないと警告されている理由を理解していると思います。strエラーが発生した場合にポイントされた割り当てられたスペースを解放していますが、str解放された後、関数はそれ以上呼び出すことができません。修正として、私はただやってみて、free(str)続いてstr = 0x00strポインタがぶら下がっていないようにするべきではありませんか?それは私のtmpポインターと関係がありますか?失敗した場合はすでにあるはずなので、私は解放したり、どちらかに設定tmpしたりしません。しかし、それはまだ技術的に正確にどこにあり、もはや必要ではないので、成功に設定する必要がありますか?0x000x00realloc0x00str

要するに:

  1. コンパイラの警告strがぶら下がっている可能性があるのはなぜですか?
  2. 警告を削除するにはどうすればよいですか?
  3. tmpポインタを正しく処理していますか?
0 投票する
3 に答える
2243 参照

c++ - GCC で C/C++ をコンパイルするためのオプションの最も強化されたセットは何ですか?

バッファー オーバーフローやダングリング ポインターなどのメモリ破損の脆弱性に対して最適な保護を提供する GCC オプションのセットはどれですか? GCC は ROP チェーンの軽減策を提供しますか? この GCC オプションを本番環境のミッション クリティカルなアプリケーションに適用することを妨げるパフォーマンス上の問題やその他の問題はありますか?

Debian Hardening GuideGCC Mudflapを見ています。私が検討している構成は次のとおりです。

この一連のオプションを改善できる点はありますか? GCC の最新バージョンを仮定します。今後のクールな機能を知っている場合は、お知らせください。

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

c - Cのエラトステネスのふるいアルゴリズム

さて、私が作成したこの関数は、エラトステネスのふるいアルゴリズムを使用して、すべての素数 <= n を計算します。この関数は、素数と素数の数をパラメーターに格納します。

関数が終了するとき、素数は、すべての素数 <= num を保持する、動的に割り当てられたメモリのチャンクを指している必要があります。 *count素数の数になります。

ここに私の機能がありますgetPrimes:

さて、これが意図した出力と私の出力です。getPrimesご覧のとおり、関数内で何か問題が発生していますが、何が問題なのかわかりません。

これまでに人々が私に指摘した3つの問題は次のとおりです。

  1. 間違った削除プロセスif (sieve[multiple]) {配列ふるいインデックスにバイアスがあります
  2. (*array) = sieve;ちょうどmallocされたメモリをリークし*array、関数が戻ったときに存在しなくなるローカル変数を指すようにします-ダングリングポインターを取得します.
  3. if(sieve[i] != NULL)NULLではなく0を使用する必要があります。ポインターの配列がありません。

ただし、発見されたぶら下がっているポインター/メモリの問題を修正する方法がよくわかりません。それに加えて、出力の数字に0が追加されている理由がよくわからないため、コード内にエラーのあるものが他にあるかどうか疑問に思っていました...別の出力スタイルについて心配する必要はありません。余分な数字だけです. これで私を助けてくれてありがとう!

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

c++ - オブジェクト内部にハンドルを返さないようにする方法 - 項目 28 効果的な C++

有効な C++ の項目 28 は言うavoid returning "handles" to object internalsこの質問は、クラスの内部を誤って公開することを避けるために、カプセル化について考えることによって、コードを正確に設計する方法を示しています。

私の例にはデータ配列が含まれており、メモリは使用を避けたい問題であるためstd::vector(および Boost ライブラリ)。

ここで配列を使用すると、私のコードの非常に単純化されたバージョンになります。

constwith を使用しget_data()ても安全ではないことを理解しています。ベクトルを使用している場合は、上記の質問の例のようにコピーできますが、これを避けたいので、この潜在的に危険な状況を回避するためにクラスを設計する最善の方法を考えていましたか?

0 投票する
0 に答える
2647 参照

c++ - Cで文字列リテラルを返すことはできますか

このコードは有効ですか?

つまり、C 関数から「Hello World」を返します。

str はダングリング ポインターになりますか?

PS: 上記の関数は実際のコードから抽象化されています。文字列リテラルを直接返すコードを書いている人を見かけます。

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

c - これにより、ダングリング ポインターが発生しますか?

そのような関数はダングリング ポインターになりますか?

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

c++ - ぶら下がりポインタ - 確認してください

誰かが次のコードが有効かどうかを確認して教えてもらえますか? 160~162行目が間違っているようです。
行番号を示すコメントがあります。
完全なコードはここから取得されますC++ Binary Search ツリー

currchkrは同じ場所を指しています。chkrを削除しても、同じ場所にcurrでアクセスできますか? それとも、どちらも new ステートメントを使用して実際にメモリが割り当てられていないため、これで問題ありませんか。

コードには本当に怪しいものがあります。メモリリークもある気がします。私は C++ の基礎を更新しようとしている専門家です。助けてくれてありがとう。