問題タブ [object-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.

0 投票する
8 に答える
11634 参照

java - Deleting a class object in java

I have a class named Point as below:

#xA;

I have an object from this class named p as below:

#xA;

I want to delete this object, I searched how to do it, the only solution I found was:

#xA;

But the finalize method of Point didn't work after I did it. What can I do?

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

delphi - FSQL (TStringList) を解放しようとすると Delphi XE3 の無効なポインタが発生する

XE3 で新しいアプリを作成していますが、D2007 で作成されたいくつかのユニットを使用しています。

TStringList データ項目を解放するときにエラーが発生します。データ項目 FSQL を作成するコードは次のとおりです。

エラーが発生しているコードは次のとおりです。

エラーは「FreeAndNil(FSQL);」で発生します。「FSQL.Free」を試してみましたが、同じ結果が得られました。

これが私が得ているエラーです:

プロジェクト: PayorUpdate.exe で例外クラス EInvalidPointer が発生し、「無効なポインター操作です。

青い矢印 (デバッグ モード) を壊すと、_FreeMem(Pointer(Self)); を指しています。System ユニットのプロシージャ TObject.FreeInstance では、次のようになります。

TStringList データ項目を解放しないと、アプリでメモリ リークが発生します。

設定する必要がある構成オプションはありますか? 私はグーグルで検索しましたが、3つの可能性の1つ以外に、私が間違っていることを説明するものは何も見つかりませんでした:

  • 他のメモリ マネージャによって割り当てられました。
  • 以前に一度解放されていました。
  • それは何によっても割り当てられたことはありませんでした。

試してみると...ただし...問題を回避することはできますが、これは避けたいと思います。

ところで、別のユニットに別の TStringList があり、FreeAndNil を作成しましたが、エラーは発生しません。

ソース全体は次のとおりです。

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

c++ - コンテナで新しいプレースメントを使用する

C++ でのコンテナーの実装に出くわしました。そのクラスは、内部バッファを使用してそのオブジェクトを管理します。これは、安全チェックなしの簡易バージョンです。

私の知る限り、 /がカスタマイズされていない場合、これはEオブジェクトを重複してContainer()構築/破棄します。これは危険なようです。~Container()newdelete

危険な冗長なコンストラクタ/デストラクタの呼び出しを防ぐための最良の方法で配置newを使用しAdd()ていますか (クラスを完全な機能のプールにバインドすることは別として)?

配置を使用する場合newnew char[sizeof(E)*100]バッファを割り当てる正しい方法はありますか?

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

c++ - C++ でのオブジェクトの作成と破棄の順序

C++ でオブジェクトを作成および破棄する順序について詳しく学習するための簡単なプログラムを作成しました (Visual Studio 2015 を使用)。ここにあります:

出力は私を少し驚かせました(a1s):

何が起こっているのかをもっと知るために、オブジェクトのインスタンスに関する情報を追加しました:

結果はさらに驚くべきものでした:

つまり、なぜa1のコンストラクターは1 回だけ呼び出され、デストラクタは3 回呼び出されるのでしょうか。私はa値渡しをしているので、明らかに少なくとも 1 つの一時オブジェクトが作成されますが、いついくつの Aインスタンスが作成および破棄されるのか説明してください。

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

c++ - 戻り前に引数の破棄が発生しますか?

OK、次の一連のイベントがあります。

  1. r値オブジェクトを構築します
  2. そのr値オブジェクトへのイテレータをパラメータとして関数に渡します
  3. 関数はこの反復子で動作します
  4. 関数はこの反復子を値で返します
  5. イテレータを逆参照します

r値オブジェクトのクリーンアップの原因がわかりません。その行の終了ですか?

OK、具体的には、この質問に対するより良い答えを見つけようとしています: string Multiplication in C++そして、私はコードを持っています:

stringそのため、内部で構築された がいつgenerate_n破棄されるべきかを知りたいです。ちなみに、これは gcc 5.1 で問題なく動作するようです: http://ideone.com/Y8rDs5しかし、未定義の動作が発生する可能性があります。これは、コードが Visual Studio 2015 でセグメンテーション違反を起こすという事実によって暗示されています。