問題タブ [char-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 - ヒープに割り当てられたメモリを使用しているときに、プログラムがセグメンテーション違反をスローするのはなぜですか?
文字列を逆にするプログラムを書いた後、文字列を逆にしようとしたときにセグメンテーション違反が発生した理由を理解するのに苦労しています。私のプログラムを以下にリストしました。
最初の質問:
charポインタstr()に1バイトのメモリしか割り当てておらずcalloc(1,'\0')
、18バイトの文字列をコピーしmystring0123456789
たにもかかわらず、エラーはスローされず、プログラムはSEGFAULTなしで正常に動作しました。
プログラムがエラーをスローしなかったのはなぜですか?理想的には、その大きな文字列を格納するためのメモリがないため、エラーがスローされるはずです。誰かがこれに光を当てることができますか?
プログラムは完全に実行され、出力が表示されますReverse String is: 9876543210gnirtsym
。
2番目の質問:
ステートメントを置き換える場合
と
str()に十分なメモリを割り当てても、プログラムでセグメンテーション違反が発生しますmalloc(100)
。
プログラムがセグメンテーション違反をスローするのはなぜですか?
c++ - char ポインターでの C++ エラー
構造体内で char* 文字列を初期化したい。
これは構造体です:
そして、これがクラッシュするポイントです..
これがメインです:
最初のものはうまくいっていますが、2番目のものはそうではありません..どこに問題があるのか を理解するのを手伝ってもらえますか? ありがとう!
c++ - ++ を使用するとセグ フォールトが発生するのに、'1 +' を使用すると発生しないのはなぜですか?
++ 演算子を使用して segfault が発生する理由を説明してください。明示的に 1 を追加することと ++ 演算子を使用することの違いは何ですか?
c++ - ポインターを介して char* にアクセスする
ここに私の問題があります。
char* を定期的に変更するクラスがあります。
この値を読み取ることができる必要がある別のクラスがあります。したがって、必要に応じて値をチェックできるように、この 2 番目のクラスのコンストラクターに char* を渡したいと思います。
別のパラメーターの実装の例を挙げましょう。これはブール型です。
クラスA:
クラス B では:
これまでのところうまくいっています - これはうまくいくようです。どちらのクラスも、このブール値を変更してアクセスできます。
ここで、char* を使用して同じことを行う必要があります (文字列を使用できないため、URL アドレスなどの短いテキストを保存するには、これが最善の方法だと思いますか?)。
だからここに私が書いたものがあります:
クラスA:
クラスC:
問題は、文字列が変更され、そのアドレスも変更されたためだと思いますか? 私は本当に混乱しています - 誰かが何が起こっているのか教えてもらえますか? この状況で私は何をすべきですか?
アップデート:
問題はchar *を変更する方法にあるようです:
文字列の値を char * に書き込む他の方法はありますか?
c - C の char* および boolean TRUE FALSE
char*
if-then-else 論理フローに使用される関数引数を持つレガシー コードがあります。例えば:
myFunc(char *f_reset)
から電話しているとします。main()
関数呼び出しに入ろうとすると、それが false*f_reset
として評価されることは決してないことがわかります。これは、ガベージなどのために常に true です。0
-8342345825
使用している理由char*
は、おそらく昔は boolean が char *? よりも多くのメモリを使用していたためです。過去に Stackoverflow の投稿で読んだもの。
char*
論理的 true false との関係について、ダミーのガイドを教えてもらえますか?