問題タブ [object-lifetime]

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 に答える
363 参照

c++ - C++ データ構造オブジェクトの寿命は?

Car というクラスを定義するがありCar.h、 my を実装する Car.cpp の実装があるとします。class Carたとえば、 my Car.cppcan be :

ヘルパー配列の寿命は? 言う必要がありますstatic Helper helpers[];か?私がいくつかの悪い習慣を行っている場合は、お知らせください。

0 投票する
6 に答える
818 参照

c++ - C++: オブジェクトの有効期間と依存関係を管理する方法は?

具体的な問題:

タイプ A とタイプ B (他のタイプの中でも) のオブジェクトを持つメイン アプリケーションがあります。タイプ B のオブジェクトは、A オブジェクトを適切に構築する必要があります (したがって、コンストラクター A(const B& b) があります。ただし、Main は保持している B オブジェクトをいつでも変更できます。Main がその B オブジェクトを変更したときに、オブジェクトの内部参照が変更されましたか?

一般に、オブジェクトに依存関係がある場合、オブジェクトの有効期間を管理するための良い方法は何ですか?

0 投票する
1 に答える
3826 参照

asp.net - ページロードでビューステートをロードし、ページアンロードで保存(ベースクラスから)-c#Asp.net

ありふれた初心者の質問をすることを許してください、しかし私はクラスのライフサイクルの行き詰まりで立ち往生しているようです。

だから私は私のページを持っています

そして、このようなBasePage:

ここで、コンストラクターから実行する、ページの読み込み時にモーダルを取得したいと思います。ページのアンロード時に保存するにはどうすればよいですか?信頼性が低いため、デストラクタは使用できません。

このシナリオの最善の解決策は何ですか?

ありがとう。

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

c++ - 警告 C4172: ローカル変数にバインドされた const std::string への参照を返しています。どのくらい安全ですか?

私は仕事で私たちのプロジェクトの 1 つを構築していたところ、新しい機能が追加されたことがわかります。

コンパイラは警告を出します:

警告 C4172: ローカル変数または一時のアドレスを返す

コンパイラは正しいと思います。この機能は安全ですか?

const char*関数は、文字列リテラルが静的な保存期間を持っている限り、OK を返さないことに注意してください。への参照を返しますconst std::string

0 投票する
1 に答える
564 参照

biztalk - BizTalk マッピング - スクリプト Functoid オブジェクトのライフ サイクル、いつ初期化されて破棄されるか

BizTalk マップでスクリプト関数を呼び出す場合、オブジェクト (呼び出しているクラス) は最初の呼び出し時に初期化され、変換が行われている間ずっとメモリに保持されますか? または、新しい行が実行されるたびに、またはスクリプトが呼び出されるたびに、破棄されて初期化されますか?

私が尋ねる理由は、スクリプト関数を介して小さなルックアップ テーブルをメモリにキャッシュすることのメリットについて議論したからです。最初のレコードを初めて検索するときに辞書をキャッシュし、その後の検索ではデータベースにアクセスせずに同じ辞書を使用したいと考えています。

これは素朴なアプローチですか?オブジェクトが再初期化されるためにディクショナリは失われますか?それとも、変換が終了するまでメモリに保持されますか? マイクロソフトはこれに関するガイダンスを持っていますか (私は見つけることができませんでした)?

0 投票する
1 に答える
1010 参照

c++ - luabindがクラスをインスタンス化する方法を理解するのに助けが必要

私がこのようなクラスを持っているとしましょう:

そして、次のようにLuabindを介してLuaに公開します。

そして最後に、次のようなスクリプトでインスタンス化します。

その時点でのAの実際の「存在状態」は何ですか?

それはヒープのどこかにあり、luaはそれへの参照をどこかに保持していますか?(またはluabind :: object?)

newまたは同等のものによって割り当てられたように、それはポインタにしかなり得ないような気がします。

ただし、参照を受け入れる関数をluaにバインドすることはできます。たとえば、最終的にlua_doSomething(A & a)は実際の参照になります。確かに、これは非常にうまくいく可能性があることを私は知っていますが、それがどのaように行わ*aれるのかはわかりません。

私がこれを求めている理由は、スクリプトでインスタンス化されたオブジェクトの存続期間を少しでもよく理解して予測するためです。

それと、上記のようにクラスをluaに公開する代わりに、所有権や存続期間が変更されるかどうかわからない場合は、次のようにします。

そしてそれを次のように使用する

これまでに理解したロジックでは、luabindのこのような割り当てがバインドされたコンストラクターで行うのと同じでない限り、私が新しいオブジェクトを割り当てるため、この場合はクリーンアップを行う必要があります。

要するに、私はオブジェクトの存続期間などについて本当に混乱しています...これに関連するキーワードをグーグルで検索しましたが、 http: //www.gamedev.net/topic/525692-luabindのようなものしか取得していません-所有権と破壊/

それは私が知りたいことではありません。割り当て、インスタンス化、ライフタイムなど、舞台裏で物事がどのように処理されるかを具体的に理解したいと思います。

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

c# - Dispose をオーバーライドして、常に SaveChanges を呼び出すエンティティ クラスを作成できますか?

これはかなり細かい点であり、答えは「そもそもホットなアイデアではありません」であると予想しています。

モデルコード:

クライアントコード:

私が確信していない問題は次のとおりです。

  1. 何らかの理由で「ファイナライズ」を考えていたので、これを行うのに適切な場所は Dispose です - 私はいつも C# の破棄について混乱します。

  2. クライアント コードで例外がスローされた場合、通常は SaveChanges はスキップされますが、それで問題ありません。空のキャッチで try を使用する必要がありますか?

    /li>
0 投票する
2 に答える
245 参照

c++ - C++での一時的な呼び出しの連鎖

文字列を変換するクラスがあります。

だから私はサブクラスを作成することができます

そして、変換を使用できます。

このためのより良いデザインはありますか?可能であれば動的allocation/shared_ptrの使用を避けたいのですが、通話中に一時的なものが存続するかどうかはわかりません。また、破壊中にそれぞれが親と会話できるようにしたいtranserので、一時的なものも正しい順序で破壊する必要があります。連鎖変換を作成して後で使用するために保存することも困難です。

もはや存在しない一時的なものへのポインタを保存します。のようなことをする

安全ですが、迷惑です。このような連鎖操作を行うためのより良い方法はありますか?

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

c++ - 一時的に寿命が延びるのを防ぎますか?

これは不可能かもしれませんが、一時的なものが元の表現を超えて永続しないようにすることができるかどうか疑問に思っていました. 親オブジェクトを指すオブジェクトのチェーンと、子オブジェクトを作成するメンバー関数があります。簡単な例はこちら

私が使用したい方法personは、それを関数に渡すことです。次のようなものです。

結構です。

元の式を超えて存続する一時変数がない限り、これは正常に機能しますが、最終的な一時変数の 1 つを const 参照にバインドすると、その親が存続せず、セグメンテーション違反が発生します。のコピー コンストラクタと代入演算子を非表示にすることはpersonできますが、この種のエラーの発生を防ぐ方法はありますか? 可能であれば、動的割り当ては避けたいと思います。

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

c++ - 一時オブジェクトをベクトルに移動する

上記の例では、次の出力が生成されます。

質問:

  1. 最初のデストラクタが実行されるのはなぜですか (ただし、2 番目のオブジェクトに対しては実行されません)。
  2. 1 番目のオブジェクトの移動の前に 2 番目のオブジェクトの移動が実行されるのはなぜですか?
  3. 最後に各オブジェクトに対して 2 つのデストラクタが実行されるのはなぜですか?

PS確認したところ、オブジェクトは実際に期待どおりに配置されています(1番目はベクトルの位置0に移動し、2番目はベクトルの位置1に移動します)

PPS問題があれば、私はgcc 4.3を使用しており、次のようにプログラムをコンパイルします: