問題タブ [dynamic-memory-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.
c++ - 動的メモリ割り当てを行わずに、クラスのオブジェクトをベクトルに追加するにはどうすればよいですか?
〜
AClass
vector に の新しいオブジェクトを追加したいm_Objects
。
動的メモリ割り当てを行わずにこれを行う他の方法はありますか?
c - 配列に動的メモリ割り当てを使用する
配列に動的メモリ割り当てを使用するにはどうすればよいですか?
たとえば、次の配列では、.txt ファイルから個々の単語を読み取り、単語ごとに配列に保存しています。
コード:
ここで、1000 は配列が保存できる単語数を定義し、各単語は 15 文字以下で構成できます。
ここで、そのプログラムがカウントする単語数に対してメモリを動的に割り当てる必要があることを望みます。たとえば、.txt ファイルには 1000 を超える単語が含まれている場合があります。ここで、プログラムで単語数をカウントし、それに応じてメモリを割り当てる必要があります。
[1000] の代わりに変数を使用することはできないため、ロジックを実装する方法については完全に空白です。この点で私を助けてください。
memory-management - CUDAは__device__関数でメモリを割り当てます
デバイス側の関数でメモリを動的に割り当てる CUDA の方法はありますか? これを行う例は見つかりませんでした。
CUDA Cプログラミングマニュアルから:
B.15 動的グローバル メモリ割り当て
グローバル メモリ内の固定サイズのヒープからメモリを動的に割り当ておよび解放します。
CUDA カーネル内
malloc()
関数は、デバイス ヒープから少なくとも size バイトを割り当て、割り当てられたメモリへのポインターを返すか、要求を満たすのに十分なメモリが存在しない場合は NULL を返します。返されたポインターは、16 バイト境界に位置合わせされていることが保証されています。CUDA カーネル内
free()
関数は、 が指すメモリの割り当てを解除します。ptr
これは、 への以前の呼び出しによって返されたものでなければなりませんmalloc()
。の場合、free() の呼び出しptr
はNULL
無視されます。同じ ptr で free() を繰り返し呼び出すと、動作が未定義になります。を介して特定の CUDA スレッドによって割り当てられたメモリ
malloc()
は、CUDA コンテキストの存続期間中、または への呼び出しによって明示的に解放されるまで、割り当てられたままになりfree()
ます。後続のカーネル起動からでも、他の CUDA スレッドで使用できます。CUDA スレッドは、別のスレッドによって割り当てられたメモリを解放できますが、同じポインターが複数回解放されないように注意する必要があります。
c++ - 動的機能メモリ?C ++
私はいくつかの本を読んでいますが、ポインタ/動的メモリを使用するクラス/関数(またはヒープまたはそれらがそれを呼び出すw / e)に関しては、混乱し始めます。
私が使用している本は非常に複雑な例(大規模なクラスまたは複数の関数)を使用しており、理解するのが難しいため、誰もが簡単な例のように簡単な例を示していますか?とにかくポインタは常に私の弱点でしたが、私はBASICポインタを理解しています。それらを使用するクラス/関数だけでは、少し混乱します。
また.....いつそれらを使用するかは別の質問です。
c# - 新しいことは決して失敗しませんか?
C++ では、通常、次のようなコードを見て書きます。
しかし、C# では、これをめったに見ません: (少なくとも私はこれを見たことがありません)
つまり、C# では、失敗したかどうかをほとんどチェックnew
しません。なぜそうなのですか?「In C#, new never fails」と関係がありますか? C# でnew
決して失敗しないものはありますか?
失敗した場合、なぜそのような「チェック」が C# で非常にまれなのですか? について話しているのではありません。つまり、「チェック」ではなく、OutOfMemoryException
結局のところ例外です。私はコーディングスタイルについて話している。
c - C で動的割り当てを使用してファイルを多次元配列に読み込む
以下のような構造を持つファイルからデータを C の整数の多次元配列に読み込むにはどうすればよいですか?
ファイル:
動的割り当てを使用して、これを「int ** マトリックス」変数の中に入れる必要があります。
更新しました:
以下にリストされている機能間の関係を調べて調査できるサンプルコードが必要です。
- 多次元配列とそのポインターツーポインターとの関係。
- メモリの動的割り当てとその使用に関する説明。
- サイズがわからない外部ソースからのデータを処理する方法、C プログラム内で行/列を配列に分割する方法。
共有コード:
ありがとうございました。
c++ - C++ - 動的メモリ割り当てに必要なメモリ
int
オブジェクトにメモリを動的に割り当てたい場合は、次のようにします。
int *x = new int;
この場合、ヒープがオブジェクト4-bytes
のメモリを確保していることがわかりint
ます。
しかし、user-defined
クラス (型) があり、メモリを動的に割り当てたい場合は、次のようにします。
Car *c = new Car;
Car
オブジェクトのヒープに予約する必要があるメモリの量を知るにはどうすればよいですか?
ありがとう。
c++ - 動的メモリ割り当て「削除」
int
次のように、オブジェクトのメモリ位置を動的に割り当てた場合:
int *x = new int;
それが終わったら、ヒープ上のメモリを解放したいので、次のようにします。
delete x;
今、私が次のことをしなかった場合:
x = NULL;
別のアドレスx
を指していますか?更新:代わりに another
many
私がしなかったと言って、別のx = NULL
を作った場合、どうなりますか? delete x;
c++ - C++ - 「new」を使用してヒープにメモリを割り当てる
次のステートメントがあるとします。
int *x = new int;
この場合、ヒープにメモリを動的に割り当てました。つまり、オブジェクトのreserved
メモリ アドレスを取得しました。int
その後、私は次のようにしました:
delete x;
つまりfreed up
、ヒープ上のメモリ アドレスです。
その後、私は再び次のことをしたと言います:
int *x = new int;
x
削除される前にヒープで指していたのと同じ古いメモリアドレスを指しますか?
以前にこれを行ったとしたらどうなりますかdelete
:
x = NULL;
そして、これを行いました:
int *x = new int;
古いもの以外のx
ヒープ上のメモリアドレスを指しますか?
ありがとう。
c++ - 動的メモリ割り当てを使用しない Pimpl イディオム
プロジェクトの特定の部分に pimpl イディオムを使用したいと考えています。プロジェクトのこれらの部分は、たまたま動的メモリ割り当てが禁止されている部分でもあり、この決定は私たちの管理下にありません。
だから私が求めているのは、動的メモリ割り当てなしでpimplイディオムを実装するクリーンで良い方法はありますか?
編集
その他の制限事項: 組み込みプラットフォーム、標準 C++98、外部ライブラリなし、テンプレートなし。