問題タブ [memset]
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++ - long (64 ビット) 型の C++ memset()
memset の宣言でわかるように:
この memset 関数 (または STL ライブラリに含まれる別の関数) を使用して、メモリをlong long型の値に設定する方法はありますか?
これを使用して、long long の配列を大きな値で初期化します。
配列の各値を繰り返し処理し、目的の値に設定するだけで、この問題を「解決」したと言わざるを得ません。
c - memset と malloc の競合を使用していますか?
memsetはbuf変数をBUFSIZのサイズで初期化すると思いますが、mallocもメモリのサイズBUFSIZEのブロックを割り当てて、変数bufにブロックの先頭へのポインタを返す... memsetが使えるかどうかわかりませんサイズBUFSIZEでデータを初期化するため、ポインターの場合、私たちはそれに注意しません....この問題を解決するために何か提案できますか、ありがとう
こんにちは、答えてくれてありがとう。そのため、問題は一般に malloc が失敗する可能性があり、その後 buf が NULL を指すという事実に起因することを理解しました。そして、コードの欠陥を修正する最善の方法は、buf が null に等しいかどうかを確認することでしょうか?
コードの欠陥を修正する最善の方法は、buf が null に等しいかどうかを確認することでしょうか?
実際に malloc が失敗する可能性はありますか? それとも単なる理論ですか?
c - CMemset出力
からmemset
始まるすべてのバイトを設定すると思います。何も印刷されていないのに少し驚いています。一体何が起こっていたのですか?p
0
memset
memset - memset() が望ましくない動作をしている
C で memset 関数を使用していますが、問題があります。これが私の問題です:
次のようにmemsetを呼び出すと:
次のようにmemsetを呼び出すと:
次のようにmemsetを呼び出すと:
この理由は何ですか?プログラムが実行され、必要に応じて出力が得られますが、最終的にセグメンテーション違反が発生します。Linux 64 仮想マシンを使用しています。
どんな助けでも大歓迎です。
わかった。私がやっていることをもっと明確にしましょう。128 バイト (配列で 0-127) のデータを作成しています。112バイト目から119バイト目まで0(NULL)を書いた(うまくいく)のですが、120バイト目に0を書き込んで実行しようとすると無限ループに陥ってしまいます。120 バイト目に 1,2,4,6 と書くと、プログラムはうまく動きます。120 バイト目に他の数値を書き込むと、プログラムはセグメンテーション フォールトを返します。基本的に 120 から 127 のバイトに何か問題があります。
c - Cでmemset()を使用する利点は何ですか
以下のような状況で memset() を利用することで、効率の面で利点があるかどうかについて興味がありました。
次のバッファ宣言を考えると...
コード行が少ないことに加えて、これを使用する利点はありますか:
これについて:
c - memsetが構造体のパディングビットをゼロにすることが保証されていますか?
一般に、C標準に従って、0のmemset()がC構造体のパディングビットをゼロにすることが保証されていますか?
gccはどうですか?
たとえば、次のようになります。
c - サイズが0の場合、nullポインタでmemset()を呼び出すことはできますか?
なんらかの理由で、 のゼロ化バージョンを手動でロールしたいと考えていmalloc()
ます。アルゴリズムの複雑さを最小限に抑えるために、次のように記述します。
これはいつ明確に定義されていsize == 0
ますか? サイズ 0で呼び出しmalloc()
ても問題ありませんが、これにより null ポインターが返される可能性があります。の後続の呼び出しはmemset
問題ありませんか、それとも未定義の動作であり、条件を追加する必要がありますif (size)
か?
冗長な条件チェックを避けたいと思います!
malloc()
今のところ、失敗しないと仮定してください。実際にはmalloc()
、失敗すると終了する手巻きバージョンもあります。
このようなもの:
c++ - 既存のアレイをゼロにする最速の方法は何ですか?
既存の1Dアレイがありますがmemset
、それをゼロにする最速の方法はありますか?
c++ - memset が std::string 割り当てでクラッシュを引き起こしている
Windows で動作するコードがありますが、Xcode 3.2.5 C/C++ コンパイラ バージョン GCC 4.2 を使用して MAC に移植すると、クラッシュします。
memset 呼び出しに絞り込みました。memset をコメントアウトすると機能し、コードに戻すとクラッシュします。
ヘッダー ファイルに次のような構造があります。
次に、cpp ファイルに次のように記述します。
...後で私はこれを持っています:
前に言ったように、 memset 呼び出しを削除すると、すべて正常に動作します。memset を呼び出す前にデバッガーを見ると、構造体の文字列は \0 であり、memset の後は nil です。
nil 文字列が割り当て行でクラッシュし、MAC でのみクラッシュするのはなぜですか?
ありがとう。
c++ - Genetic Algo のビット単位のメモリ値の割り当てと取得
GA/GP 用のクラスを開発するためのこのコードに出くわしましたが、理解できなかったため、プログラムをデバッグできませんでした。
上記は簡単です。次に、生物の適性をテストする前に生物を開始しようとします...
私が理解している限りでは、memset() はバイナリ値をそのメモリ ロケーション void ポインター (newOrgDna.dataPointer) などに書き込もうとします。しかし、これらすべてのバイナリ値を再構築して、newOrg の変数「dna」に割り当てられた整数値を取得する方法がわかりません。これにより、個々の生物に割り当てられた整数値をチェックし、最終的には、メモリの場所全体に存在する集団全体を確認できます。 「組織」に割り当てられています。
上記から推測できるように、私はこの深いレベルの詳細でメモリ管理にあまり慣れていないので、あなたの助けに非常に感謝しています。
どうもありがとう