問題タブ [automatic-storage]
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++ 仕様で好まれます。
スタックとヒープ以外の割り当て/割り当て解除の代替モデルはありますか?
c++ - 自動オブジェクトのデストラクタが 2 回呼び出されるのはなぜですか?
(私の質問への回答にはコピー コンストラクターが含まれますが、コピーは別のクラスへのメソッド呼び出し内ではなく、関数からの戻り時に行われます。参照されている可能性のある重複を実際に見ましたが、vector によって作成されたコピーから推測しませんでした::ここにある私の関数もコピーを作成したことを push_back します。
自動オブジェクトの構築/破壊を理解しようとしています。疑わしいと思われるコードに出くわしたので、それを理解するために独自のバージョンを作成しました。つまり、元のコードには、関数に対してローカルなオブジェクト (自動オブジェクト) を返す関数が含まれていました。それは私には安全ではないように見えたので、それを調べるためにこのプログラムを書きました:
私はこの出力を得ます:
私を混乱させるのは、出力の 4 行目です。
ファントム 1 はmain
を入力すると自動的に構築されます。
ファントム 2 は、getPhantom
入力すると自動的に構築されます。
Phantom 2 は終了時に自動的に破棄されますgetPhantom
(これが、Phantom 2 からの復帰getPhantom
が安全ではないと私が信じている理由です)。
しかし、その後、私は混乱しています。デバッガーによると、出力の 4 行目が表示される前getPhantom
に戻ってきました。のデストラクタが 2 回目に呼び出されると、コール スタックは次のようになります。Phantom
管理された言語では、次の行がどのように表示されるかを確認できました。
Phantom 1 は破壊されますが、Phantom 2 には影響しません。これは C++ であり、Java ではありません。
Phantom 2 のデストラクタへの 2 回目の呼び出しの原因は何ですか?
c++ - なぜこの自動保管構造がまだ存在するのでしょうか?
コード
stack.h
:
main.cpp
:
述べる
ほとんどのmain()
ことはおそらく無関係ですが、私がやっていることを示したいだけです。push()
とpop()
が重要なブロックです。
上記のコードは、スタックをItem
s で埋めることになっています。がItem
ポップされると、実行中payment
の に追加されますtotal
。
Stack
また、 のメソッドpop()
とpush()
関数を区別してmain()
ください。
ジレンマ
コードは希望どおりに機能しますが、理由がわかりません...
関数でローカルを作成しItem
ますpush()
。参照され、 に配置されますStack
。しかし、push()
関数が終了すると、このローカルItem
は自動ストレージにあるので削除されるべきではないでしょうか? pop()
それでも、私が呼び出すと、そこにあるので、どういうわけかまだ存在しています。
c - 自動変数へのポインタを返す関数
そのため、私は脳画像 I/O の 10 年以上の歴史を持つ「標準」ライブラリを使用しています。私はこの機能に遭遇しました:
私の質問は、この関数が自動変数へのローカル ポインターを返すのはなぜですか? nimポインタが範囲外になり、関数の完了後に削除されることになっているため、この慣行は禁止されていませんか?
私はすでにこの質問を読みましたが、答えが得られませんでした:
save - Debian を自動的に保存する
私は Debian サーバーを持っており、いくつかのファイルを自動的に「保存」して、自動的に googledrive に送信したいと考えています。この自動タスクは定期的に (たとえば、毎週) 実行する必要があります。