教養としてのC言語:ITpro ニュース  

こんにちは ゲスト さん | ログイン | ヘルプ | okyuu.com Feed Feed

総合トップ / ニュース / プログラミング ニュース / 開発言語 ニュース / C,C++ ニュース / 教養としてのC言語:ITpro

315589

筆者は「日経ソフトウエア」というプログラミング雑誌で記事の執筆と編集をしている。先日,C言語にターゲットを絞った特集を企画・担当した。記事は無事校了し,今はこの特集を収録した2008年11月号が書店に並んでいる。 C言語の特集を企画した理由はただ一つ,C言語を学ぶことによって,プログラミングに関するより深い知見を得られると強く感じたからだ。筆者自身,C言語に不案内で苦手意識を感じていたので,その思いは余計に大きかった。同時に,だからこそ,筆者同様にC言語の経験が比較的少ない人,そしてこれからC言語を...

  • コメント数 (6)
  • クリップ数 (0)
  • アクセス数 (2637)
  • Tag 

C言語はプログラマがたしなむべき教養になったのではないか

ポインタ、やりましたねー
ポインタのポインタとか。ポインタを使ってリスト構造を使ったりしましたね。
メモリをfreeする順番を間違えると、二度とアクセスできないメモリ空間ができてしまったりして・・・・

親関数から、子関数を呼んだときに、そちらでmallocして関数の実行が終わって、処理が親関数にもどってきたら子関数で確保されたメモリって自動でfreeされるんでしたっけ!??

親関数から、子関数を呼んだときに、(省略)
freeされないと記憶していますが、あまり自信ないです・・・。 子関数から戻る直前に子関数の中でfreeするのが礼儀(?)だったような・・・。 ・・・ さすがに長年触ってないと忘れてしまいますね・・・。

全く記憶していなくて、全く自信がないですが、自動でfreeされないでしょう。

関数抜けるとfreeされる仕様だと仮定すると、大きなメモリを必要とする処理は、すべて同じ一つの関数内に集めることになります。イメージ的にはでっかいmain関数とか、もしくはmallocばっかり並んでるmain関数とかって感じですね。

そして処理の過程で、子くらいならまだしも、孫関数で動的にメモリ確保が必要になり、それが継続して確保し続ける必要がある場合は、「いったん戻って確保して確保して、また孫の階層で処理する」「孫で必要になるかもしれないからとりあえず確保しておいてから関数を使い、必要なかったら戻ったところでfreeする」なんか変です。

これが、はじめの仮定(仕様)を変えることで楽になれるなら、言語仕様の方を変えたいですよね。
そして、そんなコードを書いた記憶はありませんよね?

takanowaさん、sendredirectさん、ありがとうございます。やはりされないですよね。
確かに、子や孫では、その関数の処理が終了しても持ち続けないといけないようなメモリを確保するのは、おかしいですね。子のほうで終了前にきちんとfreeしとくということですね。

親関数から、子関数を呼んだときに、そちらでmallocして関数の実行が終わって、処理が親関数にもどってきたら子関数で確保されたメモリって自動でfreeされるんでしたっけ!??
 一般的には解放されないでしょう(Cが使える環境すべてを知っているわけではありませんので、一般論です)。言語仕様がそうなっていたかと記憶します。  ちなみに、Visual C++標準のライブラリですと、malloc()した領域は、プロセスが「正常に」終了した時点で自動的に解放されます。  (上記ライブラリのmalloc()関数が内部的に使用している、HeapAlloc()というWindows APIの仕様による)  他の処理系については、ちょっとわかりませんase02

fujiyoshisyoutaさん、ありがとうございました!

でも皆さん既にC言語現役ではないのですねase01

あなたの問題は解決しましたか?

okyuu.comはITエンジニアのための質問サイトです。あなたの質問に答えてくれるエンジニアがいるかもしれません。なんと回答率は89

はじめての方へ

バッヂ取得者一覧
chonan

カテゴリ

特集

okyuu.comポイントレース中間発表 okyuu.comポイントレース中間発表
まだまだ間に合う!okyuu.comポイントレース 抽選で3名様に、すてきな商品をご用意しています。
okyuu.comポイント獲得を競って、話題の賞品をゲットしよう! okyuu.comポイント獲得を競って、話題の賞品をゲットしよう!
新しい評価指標「okyuu.comポイント」を多く獲得して、話題の賞品を手に入れよう!
ソフトウェアを公開するのが楽しい 岡野真也さん ソフトウェアを公開するのが楽しい 岡野真也さん
ソフトウェアを公開するのが面白くてたまらない。作っては公開というのが彼のやり方だが、若きエンジニアにとってはそれくらいがちょうどいいのかもしれない。
コンピュータは世界を広げる実験道具 西尾泰和さん コンピュータは世界を広げる実験道具 西尾泰和さん
プログラミング、サイエンス、デザイン マルチな彼にとって、コンピュータは未知の世界を広げるための道具であることに変わりはない。今後の展開が楽しみだ。
理想のOS開発に人生を賭ける 川合秀実さん 理想のOS開発に人生を賭ける 川合秀実さん
OSASK計画代表の川合さんは、人生の1秒を惜しみながら独自OSの開発にいそしむ。
「楽しむ」それが豊かなエンジニアになるコツ 坂井恵さん 「楽しむ」それが豊かなエンジニアになるコツ 坂井恵さん
日本MySQLユーザ会の副代表を務める坂井恵さん。技術の現場で会社運営に興味を持ち、独立起業の道を選んだエンジニアだ。
夢はエンジニアに強い影響を与える本を書くこと 松信嘉範さん 夢はエンジニアに強い影響を与える本を書くこと 松信嘉範さん
ソニーの情報シスから日本を代表するMySQLのコンサルタントに。彼が魅せられたオープンソースの世界とは?
お友達紹介機能をつかってポイントGET! お友達紹介機能をつかってポイントGET!
お友達を招待してみんなでokyuuポイントをGETしよう!
オープンソースの活動「すごく、いい」 前坂徹さん オープンソースの活動「すごく、いい」 前坂徹さん
オープンソースプロジェクトで活躍する若き新鋭。コミュニティ活動の感想を尋ねると「すごく、いい」と満面の笑み。
コンピュータは創造力を刺激する 奥一穂さん コンピュータは創造力を刺激する 奥一穂さん
天才エンジニアとしての国際的な評価も高い奥一穂さん。世間からのスマートだとの評価には「自分は広く浅くだから」とさらり。
25歳からプログラミング「泣きながら覚えた」 庄司嘉織さん 25歳からプログラミング「泣きながら覚えた」 庄司嘉織さん
25歳でプログラマーに転向した。いまやjava-jaを立ち上げるなど精力的なエンジニアだ。
Rails勉強会@東京は“キャスト”の気持ちで 諸橋恭介さん Rails勉強会@東京は“キャスト”の気持ちで 諸橋恭介さん
大学時代、偶然手にしたMacが諸橋さんにITエンジニアの道を開いた。
"シャイモード"機能を活用しよう! "シャイモード"機能を活用しよう!
こんな質問してもいいのかな?そんなときは"シャイモード"で投稿!
RX-7とサーバ運用の意外な共通点 並河祐貴さん RX-7とサーバ運用の意外な共通点 並河祐貴さん
Amazon EC2を巧みに使いこなすTIS/SonicGardenの並河さん。「腕一本で食べていきたい」とITエンジニアを目指した。
「ブラックボックスは不安でしょ」 ひろせまさあきさん 「ブラックボックスは不安でしょ」 ひろせまさあきさん
エンジニアが楽しくて仕方がない。オープンソースを組み合わせてシステムを作り上げるのが彼の矜持のようだ。
Perlの地位向上を胸に 牧大輔さん Perlの地位向上を胸に 牧大輔さん
endeworksの牧大輔さんは社団法人JPAを立ち上げ、Perlの企業利用を促進したいという。
偶然からCTOへ ライブドアCTO池邉智洋さん 偶然からCTOへ ライブドアCTO池邉智洋さん
池邉智洋さんはライブドアCTOの技術メンバーを先頭で率いる。「まずはやって見せることも大事」と語る。