問題タブ [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.
memory-management - スタックとヒープとは何ですか?
プログラミング言語の本では、値型はスタック上に作成され、参照型はヒープ上に作成されると説明されていますが、この 2 つが何であるかは説明されていません。私はこれについての明確な説明を読んだことがありません。スタックとは何かを理解しています。しかし、
- それらはどこにあり、何ですか (物理的には実際のコンピューターのメモリ内にあります)。
- それらは OS または言語ランタイムによってどの程度制御されますか?
- 彼らの範囲は何ですか?
- それぞれの大きさは何で決まるのですか?
- 何が速くなるの?
c - Cで配列の配列を動的に割り当てる
配列の配列を動的に割り当てるなど、C のいくつかの基本的なことを本当に理解していません。私はあなたができることを知っています:
2 次元配列を宣言するためです (その後、*alloc 関数を使用して割り当てられます)。また、実行することで「簡単に」アクセスできます*(*(m + line) + column)
。しかし、その配列から要素に値を割り当てるにはどうすればよいでしょうか? gcc を使用すると、次のステートメントm[line][column] = 12;
はセグメンテーション違反で失敗します。
任意の記事/ドキュメントをいただければ幸いです。:-)
c++ - New の代わりに Malloc を使用する場合
重複:どのような場合に malloc と new を使用しますか?
この質問を読み直してください:
C++ の "new" と "malloc" と "calloc" の違いは何ですか?
私は答えをチェックしましたが、誰も質問に答えませんでした:
- new の代わりに malloc を使用するのはいつですか?
理由はいくつかあります(2つ考えられます)。
一番上に浮かび上がらせてください。
c - メモリのmalloc/freeを追跡する単純なC実装?
プログラミング言語: C プラットフォーム: ARM コンパイラ: ADS 1.2
melloc/free
プロジェクトで単純な呼び出しを追跡する必要があります。プログラムがすべてのリソースを割り当てたときに必要なヒープメモリの量について、非常に基本的な考えを得る必要があります。そのため、malloc/free
呼び出しのラッパーを用意しました。これらのラッパーでは、 が呼び出されたときに現在のメモリ カウントをインクリメントし、が呼び出さmalloc
れたときにデクリメントする必要がありますfree
。malloc
呼び出し元から割り当てるサイズがあるので、ケースは簡単です。free
ポインター/サイズのマッピングをどこかに保存する必要があるため、このケースをどのように処理するのか疑問に思っています。これは C であるため、これを簡単に実装するための標準マップはありません。
ライブラリへのリンクを避けようとしているので、 *.c/h 実装を優先します。
だから、私を導くかもしれない簡単な実装がすでにあるかどうか疑問に思っています。そうでない場合は、これが先に進んで実装する動機になります。
編集: 純粋にデバッグ用であり、このコードは製品に同梱されていません。
編集: Makis からの回答に基づく初期実装。これに関するフィードバックをいただければ幸いです。
編集: 再加工された実装
multithreading - Valgrind は、スレッドとマシンレベルの同期命令をどの程度うまく処理しますか?
私は、多数のスレッド、手動でコーディングされたマシン同期命令、および自家製の並列セーフ ストレージ アロケーターを使用する高度に並列化された Windows プログラムを持っています。残念ながら、ストレージ管理には穴があり (アロケータの同期穴ではないと確信しています)、それを見つけたいと思います。Valgrind は、ストレージ管理エラーを見つけるための優れたツールとして提案されています。これらの状況で Valgrind を使用した経験はありますか?
c++ - どのくらいのメモリを割り当てることができますか?
背景: 大量の地理データを扱う C++ プログラムを作成しており、大きなチャンクを一度にロードして処理したいと考えています。私は、32 ビット マシン用にコンパイルされたアプリを使用することに制約されています。私がテストしているマシンは 64 ビット OS (Windows 7) を実行しており、6 ギガの RAM を搭載しています。MS VS 2008 を使用しています。
次のコードがあります。
アプリが 32 ビット アドレス指定の 4 ギガバイトの制限に達するまで、メモリを割り当てることができることを期待していました。ただし、nBandBytes が 466,560,000 の場合、2 回目の試行で新しい std::bad_alloc がスローされます。この段階では、プロセスのワーキング セット (メモリ) の値は 665,232 K です。そのため、1 ギガのメモリを割り当てることさえできないようです。
32 ビット Windows でのアプリケーションの制限は 2 ギガであることが言及されていますが、これは win32 の /3GB スイッチで 3 ギガに拡張される可能性があります。これはその環境では良いアドバイスですが、このケースには関係ありません。
64 ビット OS で 32 ビット アプリケーションを使用する場合、どれくらいのメモリを割り当てることができますか?
c - C のループに malloc/free が現れるとセグメンテーション違反
基本的に次のようなプログラムがあります。
これは単なる骨格ですが、うまくいけば十分な画像が得られます. A とにかく、通常は正常に動作しますが、n1、n2 の一部の値では、free(cplptr) がセグメンテーション違反を引き起こすようです。これは 1 回だけ呼び出され、cplptr への malloc() 呼び出しの後、cplptr の対応する free() の前にアドレスをチェックします。
アドレスが一致しているということは、free() が解放すべきものを解放しているということですよね?? gdb は、プログラムが受信したシグナル SIGSEGV、セグメンテーション違反を示します。0xb7ce179b in ?? () /lib/tls/i686/cmov/libc.so.6 およびステップから 現在の関数の境界が見つかりません
セグメンテーション違反を回避するようなものを実装する別の方法はありますか?
あなたの提案をありがとう!何が起こっているのか分かりますか??
c++ - ヒープ上でポインタを宣言できますか?
これは、C++ でヒープ上に変数を作成する方法です。
ptr は、明らかに、新しい T へのポインターを参照します。私の質問は、これを行うことができます:
これは、非常に危険なコードにつながる可能性があるようです。これが可能かどうか/適切に使用する方法を誰かが知っていますか?
objective-c - オブジェクトの割り当てがおかしくなります
Instruments Object Allocをチェックしているときに、CFArrayとCFStringの割り当てがすべて赤になります。
オブジェクトは生きているように見えますが、使用されていません。これは、ヒストグラムの使用された部分が、どちらの場合もヒストグラム全体(赤に変わった)の1/10であるためです。
このアプリは、7つのビューコントローラーを備えたフォトライブラリアプリケーションです。個々のビューコントローラごとにサムネイル画像をロードし、必要に応じて画像をロードします。2つのViewController間を行ったり来たりするだけで、CFArrayヒストグラムが押し上げられ続けます。
ここにコードを投稿することが役立つかどうか教えてください。
ありがとう、P