C ++面接準備[2]

ディレクトリ

空隙


gccとグラムの違い++

gccとg ++コンパイラーGNU(組織)です。

  1. GCCおよびG ++は、CコードのC ++コードをコンパイルすることができます。しかし:サフィックス.C、CプログラムとしてGCCを、およびg ++ C ++プログラムとして、C ++プログラムとして見られる両方ともの.cpp接尾辞。
  2. G ++ C ++コードのために、GCCを起動する、位相をコンパイルし、二人は同じですが、ライブラリが自動的に使用のgccコマンドおよびC ++プログラムに参加していないので、それは通常、G ++のリンクで行われます。
  3. これは、GCC / G ++、およびg ++やGCC -lstdc ++とのリンクを指定してコンパイルすることができます。GCCコマンドが自動的に結合され、プログラム(もちろん、リンクは、次のコマンドを使用して、手動で選択することができる)で使用されるC ++ライブラリができないので、それは通常++結合Gを使用して達成されます。しかし、中にコンパイル段階、G ++自動的にgccの、両方の同等のものを呼び出します

GCCコンパイラの4つのステップ

:CC Cコンパイラのソースコードは、4つのステップがある
前処理.I ---->コンパイラ.S ---->アセンブラの.o ---->リンクを

スタックオーバーフローの原因と解決策

スタックオーバーフローの最も一般的な原因は、過度の深さや無限再帰各変数とコールに関連付けられた情報のために必要なストレージ容量は、スタックの範囲を超えているように、関数は、それ自体があまりにも多くの時間を呼び出します。

  1. 無限の再帰 - >可能であれば再帰アルゴリズム再帰未知数または(独自の動的に割り当てられたスタックを維持することにより)多数回、自分の管理再帰または同等の反復アルゴリズムに再帰アルゴリズム
  2. 非常に深い再帰 - >任意の再帰的なアルゴリズムが知られている最大の深さの後に終了していることを確認
  3. 非常に大規模なスタック変数 - >スタック上の大きな変数を割り当てないでください。

C ++のメモリリークのいくつかの例

  1. マッチングなしのコンストラクタとデストラクタで新しいコールと機能を削除
  2. 明確ではない、適切にネストされたオブジェクトへのポインタ
  3. オブジェクトが削除中の角括弧のアレイを使用せずに解除されたとき
  4. オブジェクトの配列へのポインタは、オブジェクトの配列と同一ではありません
  5. 不足しているコピーコンストラクタ
  6. 代入演算子のオーバーロードがありません
  7. nonmodifying演算子のオーバーロードについての共通の神話
  8. デストラクタは、基本クラスの仮想関数として定義されていません
  9. ワイルドポインタが表示されます

[1]。スタックオーバーフロー。https://en.wikipedia.org/wiki/Stack_overflow

おすすめ

転載: www.cnblogs.com/lvjincheng/p/11322981.html