問題タブ [memmove]

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

c++ - memmove と逆方向のコピー

C ( memmovecstring ライブラリ) では、ハンドルが適切にオーバーラップすることを理解してます。なぜこの追加のランタイム コストがかかるのだろうと思っていました。オーバーラップの問題は、前方ではなく後方にコピーすることで修正できるように思えますが、間違っていますか?

おもちゃの例として、配列の内容を右に 1 要素だけシフトする「右シフト」関数の 2 つのバージョンを次に示します。

それらは同等ですか?パフォーマンス的には、どちらを使用するのが最適ですか?


注: @DieterLücking のコメントから判断すると、予防措置が取られているにもかかわらず、上記のバージョンを使用することmemmoveは、この状況では安全ではありません。

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

c++ - C++アロケータを使用してメモリの一部が割り当てられているかどうかを確認する方法は?

メモリの特定の部分が単一の C++ 割り当てブロックに含まれているかどうかを判断する方法はありますか? 残念ながらリリースモードで。理想的には、Windows と Mac の両方で。

ここには本当に問題のあるバグがあります。これはリリース モードでのみ表示され、シミュレートが非常に難しく、マルチスレッドであり、通常はスタックを破壊します。memmove の呼び出しが原因のようですが、私の唯一の推測では、メモリの大部分が置き換えられており、アクセス違反が発生する前に、通常は既にスタックが置き換えられています。

アルゴリズムは非常に複雑で、これは文字通り時々発生し、効果的にシミュレートする方法がわからないため、私の唯一のアイデアは、引数が正しいことを確認するために memmove にテストを埋め込むことです。もちろん、各部分は単一の alloctor ブロックに配置する必要があるため、置換される特定のブロックが正しいかどうかを確認する必要があります。

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

arrays - cの特定の位置から別の配列に配列をコピーする

配列 A があり、この配列を位置 x から y まで C 言語の別の配列にコピーしたいと考えています。cで作成するのを手伝ってください。

memcpy を使用すると、配列が最初からのみコピーされます。特定の位置から別の位置にコピーしたい。

0 投票する
1 に答える
521 参照

algorithm - RustにC++ std::copyに相当するものはありますか?

C++のstd::copy関数は、ある反復子が指す要素を別の反復子が指す要素の上にコピーします。in C++の重要な側面の 1 つは、反復される要素の型がC++ 言語 ( Rust 言語でトレイトを実装する型)である場合にstd::copy使用することによって、適切な実装が最適化されることです。std::memmoveTriviallyCopyableCopy

std::copy現在、Rust 標準ライブラリに C++ と同等または類似するものはありますか?

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

c++ - CUDA でのバッファのビット単位のシフト

ビット単位でCUDAのバッファをmemmoveする方法はありますか? たとえば、2 バイトのバッファーとポインターの場合

ビットオフセットを指定して、ビット部分を左または右にシフトしたいと思います。何かのようなもの

上記のバッファの場合、次のことが期待されます。

電話した後

CUDA のドキュメントまたは Google で、これに適した関数を見つけることができませんでした。

注意してください: 私は興味がありませんcudaMemcpyまたは 通常のmemmove. ビット単位の memmove が必要です。
また、通常の CPU でこれを行う方法についても認識しています。より効率的な代替手段が必要なため、CUDA を検討しています。

0 投票する
1 に答える
280 参照

c - free() 関数は、いくつかの memmove の後にクラッシュを引き起こします

私はsplicejs の関数のように機能する関数を作成しています:(任意の型の)配列を指定し、指定されたインデックスで始まる要素を削除し、ギャップに新しい要素を詰め込みます(必要に応じて元の配列を拡張または縮小します)。

Windows7 で MinGw/Eclipse CDT を使用しています。これが私のコードです:

また、いくつかのテスト コードも作成します。以下のスニペットはlong longタイプ用です。

7、111、233、および 377 を出力する必要があります (インデックス 1 から 6 つの要素を削除し、111、233、および 377 を配列に詰め込みます)。

char、int、および long 型の配列をテストしたところ、すべての状況でコードが機能しました。1 つの問題を除いて: 古い配列を解放できません。によって何度かアクセスされたメモリ ブロックは、再利用できないようmemmoveです。

(1) で malloc を realloc に変更すると、free() はクラッシュしなくなりますが、関数を正しく動作させることはできなくなります (そして、free() 関数が実際に動作したかどうかはわかりません)。

この問題がどのように発生するか、およびコードを改善するにはどうすればよいかについて、アドバイスをお願いします。