問題タブ [realloc]
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 - Cの関数に動的配列を渡す
配列を引数として取り、それに値を追加し(必要に応じてサイズを増やします)、アイテムの数を返す関数を作成しようとしています。これまでのところ、私は持っています:
これは、mSize が配列のすべての潜在的な要素を保持するのに十分な大きさである場合に機能しますが、サイズ変更が必要な場合は、セグメンテーション フォールトが発生します。
私も試しました:
無駄に。
これは、realloc を呼び出すと、'a' のコピーが別の場所を指しているためだと思います。'a' が常に同じ場所を指すようにするにはどうすればよいでしょうか?
私はこれについて正しく行っていますか?C で動的構造を処理するより良い方法はありますか? これらに対処するためにリンクされたリストを実装する必要がありますか?
c - realloc と memcpy はどのように機能しますか?
2 つの質問があります。
各要素を反復するよりも速い方法で、配列内のエントリを別の配列にコピーし
realloc()
ますか? 答えが「はい」の場合、その複雑さは何だと思いますか?memcpy()
O(N)
割り当てられたサイズが元のサイズよりも小さい場合、
realloc()
エントリを別の場所にコピーするか、配列のサイズを縮小しているためそのままにしますか?
c++ - C++ コードでの realloc 実装の使用に関する質問
友達
私たちの C++ では、現在、realloc メソッドを使用して、malloc によって割り当てられたメモリのサイズを変更しています。realloc() の使用法は以下のように行われます
現在ウィキペディア (_http://en.wikipedia.org/wiki/Malloc) は次のように述べています。
代わりに
big_size バイトのメモリを取得できない場合、p の値は NULL になり、以前に p に割り当てられたメモリへのポインタがなくなり、メモリ リークが発生します。
また、上記のエラーを修正する正しい方法は
realloc() を使用する最良の方法を教えてください。
また、構造体へのポインターを取得したら、後でreallocを使用しているときに、voidへのポインターを使用できますか???
どうもありがとう
c++ - Realloc()/C++ での文字列実装用のオブジェクトのサイズ変更
それらがメモリで表現される場合、C++ オブジェクトは C 構造体と同じですか?
たとえば、C では、次のようなことができます。
+
C++ では組み込み型の演算子をオーバーロードできないと思いますchar *
。
だから私は余分なオーバーヘッドがない独自の軽量文字列クラスを作成したいと思いますstd::string
。std::string
連続して表されていると思います:
まったく同じ機能が必要ですが、長さの前に付けることはありません (8 バイトのオーバーヘッドを節約できます)。
テストに使用しているコードは次のとおりですが、セグメンテーション違反が発生します
編集:誰も私がやりたいことを本当に理解していません。はい、クラス内の文字列へのポインターを持つことができることはわかっていますが、それはプレーンな cstring よりも 8 バイト高価です。まったく同じ内部表現が必要でした。でも試してくれてありがとう
編集:私が達成したかったことの最終結果は、strcat などを使用する場合と比較して、追加のメモリ使用量なしで + 演算子を使用できることでした。
c - reallocを使用したバッファのサイズ変更
指している領域が移動した場合、free(ptr)が実行されます。
上記の行について説明していただけますrealloc()
か?この行は、calloc、malloc、realloc、およびfreeのmanページからのものです。
c++ - 以前は安定していた関数で再割り当てがクラッシュする
どうやら SDL_Mixer のこの関数は死に続けているようですが、その理由はわかりません。誰にもアイデアはありますか?Visual Studio によると、このクラッシュは、Windows が realloc() 行のどこかでブレークポイントをトリガーすることによって発生します。
問題のコードは、特に SDL_Mixer の SVN バージョンからのものです。違いがある場合。
私は Visual Studio 2008 を使用しており、music_decoders と num_decoders はどちらも正しいです (music_decoders には文字列 "WAVE" へのポインターが 1 つ含まれており、music_decoders.ptr は 0x00000000 であり、私が知る限り、クラッシュは realloc にあるようです() 関数. このクラッシュの問題を処理する方法を知っている人はいますか? この問題を解決するために、多少のリファクタリングを行う必要はありません。
c - **構造体の再割り当てに関する問題
C の realloc 関数に問題があります。次のコードを渡します。
最初の割り当てコードを送信していませんが、そこで使用しているアイテムの数を増やすと、すべて正常に機能します。realloc を呼び出すと、次のようなエラーが発生します。
malloc: *** オブジェクト 0x19dba8 のエラー: 再割り当てされるポインターが割り当てられませんでした
私の問題を解決するのを手伝ってくれませんか?
プールの作成方法は次のとおりです。
私が言ったように、たとえば1000個のアイテムを挿入し、create関数によってメモリを割り当てたい場合、100個の要素の開始プールサイズを宣言してからアイテムを再割り当てしたい場合、エラーが発生します。
このような迅速な回答をありがとうございました。
c - 再割り当ての問題
ご覧いただきありがとうございます。無視してください- あらゆる種類のシェナニガンが発生しており、さらにデバッグしようとしています。
=====================================
realloc のこの動作を説明できる人はいますか?
出力:
コード:
再割り当て後に最初から「ncryp」を削除しています。しかし、それは起こるはずがありません....
編集:より多くのコード、より多くの出力
最終編集:
現時点で何が起こっているのかわかりません。デバッグ フラグを使用するプログラムと使用しないプログラムを実行すると、異なる出力が生成されます。設計図に戻り、valgrind を使用してメモリ エラーを探します。