問題タブ [dynamic-allocation]

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

c++ - std::string の std::vector?

内部ベクトルが再次元化されている場合、私はすでにstd::vector内部でいくつかの問題を抱えています。(内部文字列のサイズを変更できるため)std::vectorを持つことが完全に安全であるか、それとも優れているかを知りたいですか?std::vector<std::string>std::vector<std::string*>

0 投票する
10 に答える
247 参照

c++ - スマートポインタが生まれる前

スマートポインター(動的領域のリソースの所有権を取得し、使用後にリソースを解放できる)が登場する前は、リソースポインターを受け取る関数に引数として渡されたときに、動的に作成されたオブジェクトの簿記がどのように実行されたか疑問に思います。

簿記とは、「新しい」ものがある場合、その後のある時点で、それに続く「削除」があるはずであることを意味します。そうしないと、プログラムでメモリリークが発生します。

次に、Bがクラスで、void a_function(B *)がサードパーティのライブラリ関数である例を示します。

3行目で何をしますか?サードパーティの機能がメモリの割り当て解除を処理したと思いますか?そうでない場合、そして私がそうだと思うなら、私のプログラムはメモリリークに苦しんでいます。しかし、それがbによって占有されているメモリの割り当てを解除し、私もmain()でそれを行って安全を確保すると、bは実際には2回解放されてしまいます。ダブルフリーエラーが原因でプログラムがクラッシュします!

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

c - 1つの大きなmallocメモリをスライスしてmalloc呼び出しを減らします

まず、ここからアイデアを得ました。

かつて私が書いた、たくさんの小さなメモリの塊を使用し、それぞれがmalloc()で割り当てられたアプリがありました。正しく動作しましたが、低速でした。私はmallocへの多くの呼び出しを1つだけに置き換えてから、アプリ内でその大きなブロックをスライスしました。それははるかに速かった。

アプリケーションのプロファイリングを行っていましたが、malloc呼び出しの数を減らすと、パフォーマンスが予想外に向上しました。ただし、まだ同じ量のメモリを割り当てています。

だから、私はこの男がしたことをしたいのですが、それを行うための最良の方法がわかりません。

私の考え:

落とし穴:

  • 10000を超えないようにする必要があります
  • 占有したのと同じ順序でメモリを解放する必要があります。(私の場合、再帰を使用しているので大きな問題ではありませんが、可能であればそれを避けたいと思います)。

Mihai Maruseacからのインスピレーション:

intまず、基本的にどのメモリインデックスが空いているかを示すリンクリストを作成します。次に、呼び出された構造にプロパティを追加しましたint memoryIndex。これは、占有されているメモリを任意の順序で返すのに役立ちます。そして幸いなことに、私のメモリの必要量はいつでも5 MBを超えることはないと確信しているので、その量のメモリを安全に割り当てることができます。解決しました。

0 投票する
4 に答える
2324 参照

c - 動的に割り当てられた 2 次元配列のサイズを取得する方法

2D 配列を動的に割り当てました。ここにコードがあります

arrofptr、arrofptr [0]、arrofptr [1]に割り当てられているバイト数を知る必要がありますか? サイズを知る方法はありますか?

印刷する場合

次に、4を出力します。

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

c - 配列を配列へのポインタとして宣言するときに割り当てられるメモリはいつですか

20x10の2D配列を割り当てようとしているときに、これらのステップのどれでメモリが割り当てられますか

ステップ1:int (*p)[10];

ステップ2:p = malloc( 20 * sizeof(*p) );

すべてのメモリ(20 x 10 x 4バイト)がステップ2で割り当てられますか、それともある程度のメモリがステップ1でも割り当てられますか?

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

c++ - オブジェクトの動的配列で delete [] を呼び出しても、メモリの割り当てが解除されませんか?

次のコードでは:

実行結果は次のとおりです。

  1. インデックス番号が 15 の要素が存在する可能性があるのは、10 個しか割り当てていない場合です。
  2. 配列全体の割り当てが解除された後もポインターに値が残っているのはなぜですか?

次のような単一の割り当てで削除を試みました:

結果は正常です。

コンパイラに依存しないことを確認するために、fedora 17 および別のプラットフォーム (SLC5 - Red Hat ベースの Linux) で gcc 4.7.2 および gcc 4.1.2 を使用してテストされています。ここで何が間違っていますか?

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

c - 2D配列を動的に宣言するには?

重複の可能性:
C で動的多次元配列を操作するにはどうすればよいですか?

1D配列のように2D配列を動的に割り当てる方法はありますか。

使用して

malloc

また

コールロック

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

c - 2Dアレイの動的メモリ割り当てがクラッシュする

重複の可能性:
Cで多次元配列を正しく設定、アクセス、解放するにはどうすればよいですか?

callocを使用して2D配列にメモリを動的に割り当てようとしています。列は2に固定されているため、動的な行のみです。

これが私が試していることです:

しかし、問題は、配列にアクセスしているときにプログラムがクラッシュすることです。MinGWGCCでEclipseを使用しています。

これが私の最初の投稿なので、ここにさらにデータを入れる必要があるかどうか、またはこれに対処する方法を教えてください。

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

c - ファイルポインタの配列を動的に割り当てます

Cでファイルポインタを「動的に」割り当てることは可能ですか?私が言いたいのはこれです:

ここで、nは整数値です。ポインタ値の配列が必要ですが、ユーザー入力を取得する前にいくつあるかわからないため、ハードコーディングできません。どんな助けでも素晴らしいでしょう!