恥の20行
米が調理されている間、私はC言語でメモリ管理を含む、初期の彼のキャリアの中で私に起こった奇妙な事件を思い出した+ +。 その当時、私はずっとあった。 、若いより速く、より多くの傲慢と多くの初心者...
より多くの経験豊富な同僚は、すべての新しいのために対応する削除がなければならないという別の経験の浅い同僚に説明していた。 そうでない場合はオブジェクトをメモリに保持され、メモリリークがあるかもしれません。
この時点で私は彼を中断して言った、"それは範囲外のオブジェクトはデストラクタが自動的に呼び出されるように十分なので、必ずしも.."
それ以来、引数とカウンターの引数での10分間の議論をロールバックし、チーム全体がまだ見て。 最後に、半分のチームは彼と私と残りの半分で合意し、その時点で誰もが心にかを確認する方法がありませんでした。 インターネット上で見てはオプションではなかった。
すべて既にPHP、JavaやCでプログラミングされた後私は、すべての答えを持っていたとして+ +私が正しかったことを後で示すことであった。
数日後、それらの哲学的な瞬間の一つは、私はメモリアドレスが数値であることを忘れて、そして後者は、通常は無用ですが、次のいずれか、共通の番号にアドレスを変換し、他の道を行くことができます。
それから私は私の理論を証明する方法を考案した:それは新しいの割り当てに制限範囲内のオブジェクトを作成します。 制限された範囲の長い外の一般的な数値としてこのオブジェクトのアドレスを保存する、制限された範囲を確定するために期待し、obejtoのデストラクタが呼び出され、その後、外側のスコープは、メモリのその領域にアクセスする、オブジェクトのアドレスを表す数値を使用してください受け取ることを示しているSIGSEGV無効なメモリ領域をアクセスしようとすることによって(セグメンテーションフォールト)。 それから私は、以下のコードを生成する。
A 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #含める #<string>を含める 名前空間 はstd を 使用 。 int argc, char ** argv ) { int型です。main(int argc、char **は ARGV){ 0 ; = 0 符号なしの長い ; { new string ( "Hello World!!!" ) ; * strは= 新しい文字列("Hello World!"という); unsigned long ) str ; =(unsigned long型)は、str; "str: " << str << endl ; 裁判所 <<"STR:"<<strが<<endlを。 "num: " << num << endl ; 裁判所 <<"NUM:"<<A <<endlを。 } * ( ( string * ) num ) << endl ; 裁判所 <<*((*文字列 )A)<<endlを。 ; 0を 返します 。 } |
見よ、私の驚きへのプログラムは私の顔に爆発しなかった 。 彼は正しく、実際に私が間違っていた一人であることを指摘していました。
より多くの検索私は、はい、そこにそれぞれのために新しいものとのみ削除することを実現し、より多くのそれぞれの新しいために[]いずれか1つだけが[]を削除する必要があります。 私はメモリ管理と適用範囲について知ってどう思うか、それはおそらく、異なる言語の間にいくつかの混乱だった。
私は前に議論の一日を始めたとき、私は、初心者がコミットしているすべての基本的な間違いを犯した。
- それが呼び出された場所干渉する。
- 証拠なしに正しいことで立って悪態をついた。
- より多くの経験豊富な誰かの知識を過小評価しています。
- あなたは彼らが単にクラス内の参照といってすべての答えを持っていると思う。
- 彼らはいくつかの言語の基本を知っているという理由だけで、その後、すべての答えを持っていることを考えること。
種の任意の良いメンバーと同様にサピエンスホモ 、たわごとを話し。 この発見に私の反応は、チーム全体を取ると私が間違っていた、ナンセンスを話して謝罪し、これを実証するために使用されるコードのこれらの20行を示すことでした。 また、私は私がチェックし、さらに我々は同じように、エスケープされているメモリ管理に関するその他の詳細を持ってきたすべてのソースを示した循環参照を 。 これは、プロジェクトの一部の再desingにつながった。
私の20行cógigoは"20恥の行"とnatual私は誤ったものなどとして知られるようになりました。 誰もが疑問を持っていたすべての時間は、"テストのためvegonhaの20行が存在する。"スポーク 意味は"後で困惑されないように簡単なテストがある。"のようなものだ
最も重要なことは、私の後のたわごとの姿勢がよく受信し、チームに利益をもたらしていたということです。 私は誰かが私は舞台裏で、皆の前で間違っている、または悪化した証明する、遅かれ早かれ、敬遠していた場合。 ミスを認めると、それから学ぶことは、私がチャレンジする準備されたことを示した。 このチームに加えて、より多くの私は(私は私より多くのように見える...),私はそれが皆のようなミスを犯して普通の人間のことを知っていた傲慢思えたが、私は誰よりも考えていないことを示した。 これは他のチームメンバーが同じことを気軽に、我々は、よりまとまりのあるチームになるための道を開いた。
コメント
- マーカスアントニウス
- http://blabos.org うっかり漏らす
- Junio
- ♣♦♥♠姫チェシャー
- ブレブのBlaber http://blabos.org
- ♣♦♥♠姫チェシャー
- ブレブのBlaber http://blabos.org

