問題タブ [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.
c - Reallocの失敗後、オブジェクトのぶら下がり警告が無料で表示されます
安全な文字列検索のために関数を完成させており、コンパイラの警告を上げて、コードのいずれかがフラグを立てているかどうかを確認することにしました。
現在、PellesCIDEで次のコンパイラ警告を受け取っています。
これが私の関数です(コードを読む前に質問全体を読みたい場合は、以下を読んでください):
str
ぶら下がっているかもしれないと警告されている理由を理解していると思います。str
エラーが発生した場合にポイントされた割り当てられたスペースを解放していますが、str
解放された後、関数はそれ以上呼び出すことができません。修正として、私はただやってみて、free(str)
続いてstr = 0x00
。str
ポインタがぶら下がっていないようにするべきではありませんか?それは私のtmp
ポインターと関係がありますか?失敗した場合はすでにあるはずなので、私は解放したり、どちらかに設定tmp
したりしません。しかし、それはまだ技術的に正確にどこにあり、もはや必要ではないので、成功に設定する必要がありますか?0x00
0x00
realloc
0x00
str
要するに:
- コンパイラの警告
str
がぶら下がっている可能性があるのはなぜですか? - 警告を削除するにはどうすればよいですか?
tmp
ポインタを正しく処理していますか?
c++ - GCC で C/C++ をコンパイルするためのオプションの最も強化されたセットは何ですか?
バッファー オーバーフローやダングリング ポインターなどのメモリ破損の脆弱性に対して最適な保護を提供する GCC オプションのセットはどれですか? GCC は ROP チェーンの軽減策を提供しますか? この GCC オプションを本番環境のミッション クリティカルなアプリケーションに適用することを妨げるパフォーマンス上の問題やその他の問題はありますか?
Debian Hardening GuideとGCC Mudflapを見ています。私が検討している構成は次のとおりです。
この一連のオプションを改善できる点はありますか? GCC の最新バージョンを仮定します。今後のクールな機能を知っている場合は、お知らせください。
c - Cのエラトステネスのふるいアルゴリズム
さて、私が作成したこの関数は、エラトステネスのふるいアルゴリズムを使用して、すべての素数 <= n を計算します。この関数は、素数と素数の数をパラメーターに格納します。
関数が終了するとき、素数は、すべての素数 <= num を保持する、動的に割り当てられたメモリのチャンクを指している必要があります。 *count
素数の数になります。
ここに私の機能がありますgetPrimes
:
さて、これが意図した出力と私の出力です。getPrimes
ご覧のとおり、関数内で何か問題が発生していますが、何が問題なのかわかりません。
これまでに人々が私に指摘した3つの問題は次のとおりです。
- 間違った削除プロセス
if (sieve[multiple]) {
配列ふるいインデックスにバイアスがあります (*array) = sieve;
ちょうどmallocされたメモリをリークし*array
、関数が戻ったときに存在しなくなるローカル変数を指すようにします-ダングリングポインターを取得します.if(sieve[i] != NULL)
NULLではなく0を使用する必要があります。ポインターの配列がありません。
ただし、発見されたぶら下がっているポインター/メモリの問題を修正する方法がよくわかりません。それに加えて、出力の数字に0が追加されている理由がよくわからないため、コード内にエラーのあるものが他にあるかどうか疑問に思っていました...別の出力スタイルについて心配する必要はありません。余分な数字だけです. これで私を助けてくれてありがとう!
c++ - オブジェクト内部にハンドルを返さないようにする方法 - 項目 28 効果的な C++
有効な C++ の項目 28 は言うavoid returning "handles" to object internals
。この質問は、クラスの内部を誤って公開することを避けるために、カプセル化について考えることによって、コードを正確に設計する方法を示しています。
私の例にはデータ配列が含まれており、メモリは使用を避けたい問題であるためstd::vector
(および Boost ライブラリ)。
ここで配列を使用すると、私のコードの非常に単純化されたバージョンになります。
const
with を使用しget_data()
ても安全ではないことを理解しています。ベクトルを使用している場合は、上記の質問の例のようにコピーできますが、これを避けたいので、この潜在的に危険な状況を回避するためにクラスを設計する最善の方法を考えていましたか?
c++ - Cで文字列リテラルを返すことはできますか
このコードは有効ですか?
つまり、C 関数から「Hello World」を返します。
str はダングリング ポインターになりますか?
PS: 上記の関数は実際のコードから抽象化されています。文字列リテラルを直接返すコードを書いている人を見かけます。
c - これにより、ダングリング ポインターが発生しますか?
そのような関数はダングリング ポインターになりますか?
c++ - ぶら下がりポインタ - 確認してください
誰かが次のコードが有効かどうかを確認して教えてもらえますか? 160~162行目が間違っているようです。
行番号を示すコメントがあります。
完全なコードはここから取得されますC++ Binary Search ツリー
currとchkrは同じ場所を指しています。chkrを削除しても、同じ場所にcurrでアクセスできますか? それとも、どちらも new ステートメントを使用して実際にメモリが割り当てられていないため、これで問題ありませんか。
コードには本当に怪しいものがあります。メモリリークもある気がします。私は C++ の基礎を更新しようとしている専門家です。助けてくれてありがとう。