問題タブ [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.
c - char のポインターへのポインターの割り当てに関する問題
ファイル 'vetores' の内容を char の行列にコピーするためにこのコードを書きましたが、動的割り当てに問題があると思います。誰かが私を助けることができますか?
ファイル「vetores」の内容は次のとおりです。
c - cでのさまざまな配列を含む構造体の安全な割り当て
コードにこのようなものがあります
通常、 を呼び出すとき、とfem_mesh_new
に非常に大きな数を使用するため、割り当てエラー (十分なスペースがありません) が発生することがあります。n_ver
n_tri
この種のエラーが発生した場合でも、プログラムはユーザーにアドバイスし、実行に従う必要があります。この場合、エラー ポイント以降に割り当てたすべてのものを解放したい (つまり、割り当てようとするとエラーが発生するmesh->triangles
が、mesh->vertices
割り当てられているので、解放したいmesh->vertices
)
それを行う簡単な方法はありますか?私が考えることができる唯一の方法 (これは避けたい方法です) は、多くのif (x==NULL)のコードをいっぱいにすることですが、これはメモリが割り当てられる順序のために非常に面倒です (すべてのエラーが発生する可能性があるポイントでは、そのポイント以降に割り当てられたすべてのものを解放するコードを作成する必要があります)。
明確かどうかわかりませんが、誰かが助けてくれることを願っています:)
c - malloc/calloc 呼び出しでの奇妙な SIGABORT
gdb でプログラムを実行すると、次のようになります。
fem.o: malloc.c:3096: sYSMALLOC: アサーション `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2]))) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 * (sizeof(size_t))) - 1)) & ~(((2 * (sizeof) (size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long)old_end & pagemask) == 0)' が失敗しました。
プログラムがシグナル SIGABRT を受信し、中止されました。__kernel_vsyscall () の 0xb7fe1424
このコードの後にこのエラーが発生することがわかりました:
問題は、メンバーとして double *y0 を持つ構造体です。
以前の関数で、私はこれを行います
エラーも問題もありません== NULL。
いくつかの提案?
追加:
n_tot の内容は確認済みです。正しい番号です。
c - callocを使用したマクロは安全ですか?
コードでこのマクロを使用しても安全ですか?
私はコンパイラとしてgccを使用しています...
私のプログラムにはたくさんのメモリ割り当てポイントがあるので、これを使用します。5分前に試してみましたが、奇妙なsigabortとsigsevが表示されました。今、家に帰ります...何かが見つかったらもう一度試してみます。
いくつかのアイデア/ヒント?
追加された編集:
通常、私は次のようにマクロを使用します。
c++ - C++:静的に作成された変数を、参照を期待する関数に渡すことができるのはなぜですか?
私はしばらくの間 C++ でプログラミングを行ってきましたが、自分を専門家とは呼べません。この質問は、私が抱えている実際の問題を解決するために尋ねられているのではなく、C++ が何をしているかを理解することに関するものです。
単一のパラメーターを期待する関数があるとします。
(注: パラメータは SomeClass への参照です) 次に、次のように関数を呼び出します。
なぜこれは正当な C++ なのですか? 関数は SomeClass への参照を想定していますが、静的に割り当てられた SomeClass 型の変数を渡しています。参照はポインタのようなものですよね?参照をポインターに置き換えると、コンパイラーは文句を言います。このように参照がポインターと異なるのはなぜですか?舞台裏で何が起こっているのでしょうか?
これがばかげた質問でしたら申し訳ありません。
c++ - c++で動的に割り当てられたリンクリスト.メモリリークを防ぐために例外の後に何をすべきか?
リンクリストを c++ に実装したいのですが、新しいノードを追加しながら動的に割り当てます。割り当てに失敗した場合は、プログラムの実行を停止させたいと思います。
「新しいノード」が失敗した後、例外がスローされるため、例外ハンドラーでデストラクタを明示的に呼び出す必要があります。メモリリークを防ぐために、この状況にどのように対処できますか? ここに私のコードがあります
LinkedList.h
LinkedList.cpp
cocoa - Objective-C オブジェクトを動的に割り当てる必要があるのはなぜですか?
Objective-c オブジェクトを動的に割り当てる必要があるのはなぜですか? スタック上に作成できる C++ とは異なり、オブジェクトへのポインターにする必要があるのはなぜですか? ありがとう。
c++ - クラスC++を作成するときのメモリ割り当ての問題
まだC++を学習していて、特定のエラーがまだあります:)。私は次の構成のオブジェクトを持っています:
問題は、次のコンストラクターで初期化しようとすると、セグメンテーション違反が発生することです。
私が理解している限り、「Setarea documentului finisata」というメッセージが表示され、その後にsegfaultが表示されるため、すべての変数が正しく割り当てられます。すべてのコードは、警告なしで正常にコンパイルされます。また、Googleで何かを検索しようとしましたが、私のような状況は見つかりませんでした。そのような奇妙な行動の原因は何でしょうか?
PS:コピーコンストラクターの実装:
私は先生の例からそれを取りました。また、次の方法で変数を初期化します。
教師は、オブジェクトに動的に作成された文字列が含まれていることを要求しているためです:)
c - 関数から文字列の配列を返す
を返す必要がありますchar**
が、これを行おうとすると、ローカル変数のアドレスを返すようにコンパイラから指示されます。どうやってやるの?この変数にスペースを割り当てる必要があることはわかっていますが、どうすればよいでしょうか? これが私のコードですが、2番目printf
は表示されず、関数は何も返しません:
c++ - クラスの動的割り当てを防ぐ方法はありますか?
組み込みシステムで C++ の基本クラスとサブクラス (わかりやすくするために A と B と呼びましょう) を使用しています。
時間とスペースが重要なので、最小限にする必要があります。
コンパイラは、仮想デストラクタの欠如について不平を言いますが、これは私が理解していることB*
ですA*
.
しかし、このクラスのインスタンスを割り当てるつもりはありません。operator new()
いずれかのクラスの動的割り当てがない場合にコンパイルするようにオーバーロードできますが、エンド ユーザーが A または B の新しいインスタンスを割り当てようとするとコンパイル エラーが発生する方法はありますか?
プライベート コンストラクターを介して自動コンパイラ コピー コンストラクターを "中毒" する一般的な手法と同様のアプローチを探しています。(例: http://channel9.msdn.com/Forums/TechOff/252214-Private-copy-constructor-and-private-operator-C )