問題タブ [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.

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

c - ヒープに割り当てられたメモリを使用しているときに、プログラムがセグメンテーション違反をスローするのはなぜですか?

文字列を逆にするプログラムを書いた後、文字列を逆にしようとしたときにセグメンテーション違反が発生した理由を理解するのに苦労しています。私のプログラムを以下にリストしました。

最初の質問:

charポインタstr()に1バイトのメモリしか割り当てておらずcalloc(1,'\0')、18バイトの文字列をコピーしmystring0123456789たにもかかわらず、エラーはスローされず、プログラムはSEGFAULTなしで正常に動作しました。

プログラムがエラーをスローしなかったのはなぜですか?理想的には、その大きな文字列を格納するためのメモリがないため、エラーがスローされるはずです。誰かがこれに光を当てることができますか?

プログラムは完全に実行され、出力が表示されますReverse String is: 9876543210gnirtsym

2番目の質問:

ステートメントを置き換える場合

str()に十分なメモリを割り当てても、プログラムでセグメンテーション違反が発生しますmalloc(100)

プログラムがセグメンテーション違反をスローするのはなぜですか?

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

c++ - char ポインターでの C++ エラー

構造体内で char* 文字列を初期化したい。

これは構造体です:

そして、これがクラッシュするポイントです..

これがメインです:

最初のものはうまくいっていますが、2番目のものはそうではありません..どこに問題があるのか​​ を理解するのを手伝ってもらえますか? ありがとう!

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

c++ - ++ を使用するとセグ フォールトが発生するのに、'1 +' を使用すると発生しないのはなぜですか?

++ 演算子を使用して segfault が発生する理由を説明してください。明示的に 1 を追加することと ++ 演算子を使用することの違いは何ですか?

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

c++ - ポインターを介して char* にアクセスする

ここに私の問題があります。

char* を定期的に変更するクラスがあります。

この値を読み取ることができる必要がある別のクラスがあります。したがって、必要に応じて値をチェックできるように、この 2 番目のクラスのコンストラクターに char* を渡したいと思います。

別のパラメーターの実装の例を挙げましょう。これはブール型です。

クラスA:

クラス B では:

これまでのところうまくいっています - これはうまくいくようです。どちらのクラスも、このブール値を変更してアクセスできます。

ここで、char* を使用して同じことを行う必要があります (文字列を使用できないため、URL アドレスなどの短いテキストを保存するには、これが最善の方法だと思いますか?)。

だからここに私が書いたものがあります:

クラスA:

クラスC:

問題は、文字列が変更され、そのアドレスも変更されたためだと思いますか? 私は本当に混乱しています - 誰かが何が起こっているのか教えてもらえますか? この状況で私は何をすべきですか?

アップデート:

問題はchar *を変更する方法にあるようです:

文字列の値を char * に書き込む他の方法はありますか?

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

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 との関係について、ダミーのガイドを教えてもらえますか?