問題タブ [destruction]
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++ での静的オブジェクトの破棄順序
静的オブジェクトが破棄される順序を制御できますか? 希望の注文を強制する方法はありますか? たとえば、特定のオブジェクトを最後に、または少なくとも別の静的オブジェクトの後に破棄することを何らかの方法で指定するには?
c++ - C++ での一時オブジェクトの正確な破棄時刻に関する質問
次のコードセーフです(DEBUGで動作します):
それで - それは安全ですか?それを忘れて、明示的な tmp でコードを使用する必要がありますか?
とにかく-オプティマイザーがこの呼び出しから戻る前に一時的なものを強制終了できるかどうか、私はまだ興味があります:
編集:ありがとうございました!残念ながら、関数「takesPointer」(ライブラリの一部です)を変更することはできません。関数「takesReference」でラップすることしかできませんでした。これはtakePointerを呼び出します-これによりコピーが削除されるか、コンパイラは引き続き作成できますかコピー(「タイプ」はint-3x3-Matrixなので、それほど悪くはありませんが、それでも...)?
破壊の時期について:「takesPointer」が戻った後、または呼び出された後に破壊されますか?
c++ - C++ の基本的なポインターの質問
私はいくつかの共有ポインタを持っていますshared_ptr<T> pointer1(new T(1));
。
ここで、コードの他の部分に明示的なコピーがあります(または他のコンテナーpointer2
に格納されると思います)。std::map
のようにコピーが行われたとしましょうmap.insert(make_pair(key1, pointer1));
。
私はその 2 番目のコピーを一部のデータをプリキャッシュするためだけに使用しています。これは、メイン ポインターが既に無効である場合、2 番目のポインターを格納する必要がないことを意味します。この場合、どうすればよいですか?
pointer1
コードの他の部分で無効になったことがわかっている場合、2 番目のポインターのメモリ割り当てを強制的に解除する方法はありますか?
または、醜い方法を取る必要があります-時々、マップにptr.unique()
設定されているポインターをチェックして、true
それらを破壊しますか?
多分いくつかの代替案/アドバイスはありますか?
編集 - プレーンコードサンプル
<0, shared_ptr[NULL]>
これらの操作が発生した後ではなく、マップを含むようにする方法/トリックはあります<0, shared_ptr[5]>
か?
ありがとう
c++ - C++ での例外のないツリーの破壊
私は最近、ルート 'ノード' を削除してツリーを破棄するときにスタック オーバーフローを取得することができましたが、ノード デストラクタは次のようになります。
私の頭に浮かんだ解決策は、独自のスタックを使用することでした。したがって、この方法でツリーを削除します。
しかし、そこで std::stack::push() が例外をスローすることがあります。例外のないツリー破壊を書くことは可能ですか? どのように?
編集:
誰かが興味を持っている場合は、jpalecek によって指摘されたアルゴリズムに触発された、例外のない非再帰コードを次に示します。
注:Node::IsLeaf()
と同等Node::GetChildCount()!=0
です。
python - Python がオブジェクトの削除または破棄を管理する方法
みんな、私はPythonにかなり慣れていないので、GUIアプリケーションを構築することを学んでいます(wypythonを使用)。Python でのオブジェクトの破壊に関する質問があります。たとえば、myFrame には onNew (新しいドキュメントを作成) と onOpen (ファイルを開く) メソッドがあります。
簡単に言うとこんな感じ。
ここで、「ユーザーが以前にどちらかをクリックした後、もう一度開くまたは新規をクリックした場合」を検討したいと思います。
そのため、ウィンドウ クラスについては、 を呼び出しself.viewwindow.Destroy()
てウィンドウを破棄できます。データモデルオブジェクトはどうですか? 最初に new:self.data=DataModel()
を呼び出し、次に open を呼び出して re-assign するとself.data=DataModel.from_file(...)
、古いインスタンスはどうなるでしょうか? 自分で破壊する必要がありますか、それとも python がこの破壊を管理しますか?
c# - すべてのコードが破棄された後でも、セッション変数の値が残るのはなぜですか?
login.aspx
table.aspx
ログアウトリンクをクリックすると
- ログインページが読み込まれ、すべてのセッション状態が破棄されます。
- ログインページ
response.write
は、セッション変数の値を表示するために使用するときにそれを確認します。 - ユーザー名とパスワードを入力して[ログイン]をクリックすると、テーブルページにリダイレクトされます。
- ログアウトをクリックすると、ログインページにリダイレクトされ、ログインページは情報を破棄します。
問題
- ログイン情報が破棄された後、テーブルリンクをクリックすると、テーブルページに移動し、NO NOと表示され、ログインページにリダイレクトされます。
- しかし、テーブルページのURLをコピーして貼り付けると、何をしてもページを表示できます。つまり、値が破棄された場合でも、セッション変数の値を取得してTRUEに評価します。
asp.netログイン関数を使用できません。制限により、そのコントロールを使用できません。
c++ - オプティマイザが関与するローカル変数の構築と破棄
このコードがある場合:
a
変数とb
が逆の割り当て順序で破棄されることを知っています(b
最初に破棄され、次にa
); a
しかし、オプティマイザがandの割り当てと構築を決して交換しないと確信できb
ますか? またはvolatile
、それを強制するために使用する必要がありますか?
com - 「CreateInstance」に対応するものはありますか?
MSXML を使用するコードがいくつかあり、これを実行して XML ドキュメント オブジェクトを作成します。
doc_in の処理が終わったら、どのように破棄するのでしょうか? doc_in が範囲外になったときに自動的に破棄されるだけですか?それとも何ですか?
qt - 緩いQProcess
2つのプログラムAとBを作成しました。Bは64ビットA内で開始される32ビットQProcessとして設計されています。これらのプログラムは、stdin、stdout、およびQSharedMemoryを介して適切に通信します。
これで、Aが閉じられると、Bもシャットダウンされます。ただし、WindowsタスクマネージャーのIがプロセスAを終了した場合、Bは緩い状態を維持し、BのCPU使用率は屋根を通り抜けます。なんで?
Aがすぐに破壊された場合、どうすればBをシャットダウンできますか?
c++ - メインスレッドの破棄順序とpthread_key_createの使用
pthread_key_create
デストラクタ関数を渡しながらの使い方が気になりました。
私はこのようなものが欲しかった:
明らかに、私はかなりの詳細を省略しました。
メインスレッドではないスレッドの場合、これは明らかに問題ありません(ロックなどが提供されます)。スレッドが停止するたびに、workoncomplex
関数が呼び出されてfoo
オブジェクトを操作します。
私の質問は、これはメインスレッドに有効ですpthreadkey
か?デストラクタの呼び出しはスレッドの終了時に発生するのは明らかですが、スタティックが破棄される前に実行されることが保証されていますか?もしそうなら、私はメインスレッドにいるかどうかを確認し、すぐに戻る必要がありますか?または、すべてのスレッドを同じように扱い、静的オブジェクトがまだ存在していると想定することはできますか。