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

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

okyuu.com / ニュース / プログラミング / 開発言語 / C,C++ / 教養としてのC言語:ITpro

ニュース

Feed

(8人の評価)

315589

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

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

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

  • Thumbnail
  • durian 投稿時間:2008/10/03 18:47
ポインタ、やりましたねー
ポインタのポインタとか。ポインタを使ってリスト構造を使ったりしましたね。
メモリをfreeする順番を間違えると、二度とアクセスできないメモリ空間ができてしまったりして・・・・

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

  • Thumbnail
  • takanowo 投稿時間:2008/10/04 00:18
親関数から、子関数を呼んだときに、(省略)
freeされないと記憶していますが、あまり自信ないです・・・。 子関数から戻る直前に子関数の中でfreeするのが礼儀(?)だったような・・・。 ・・・ さすがに長年触ってないと忘れてしまいますね・・・。
1点(1人の評価)

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

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

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

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

  • Thumbnail
  • durian 投稿時間:2008/10/06 09:45
takanowaさん、sendredirectさん、ありがとうございます。やはりされないですよね。
確かに、子や孫では、その関数の処理が終了しても持ち続けないといけないようなメモリを確保するのは、おかしいですね。子のほうで終了前にきちんとfreeしとくということですね。
0点(0人の評価)

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

  • Thumbnail
  • durian 投稿時間:2008/10/06 23:16
fujiyoshisyoutaさん、ありがとうございました!

でも皆さん既にC言語現役ではないのですねase01
0点(0人の評価)

カタログ

Eclipse
Microsoft Visual Studio
NetBeans
Xcode
C++Builder
PellesC
GNAT Programming Studio
jGRASP
KDevelop
MonoDevelop
GHS MULTI
Qt Creator
Rational
Sun Studio
Turbo C++
wxDev-C++
Geany
Dev-C++
Codelite
Code::Blocks
Anjuta

無料会員登録

カテゴリ

特集

"シャイモード"機能を活用しよう! "シャイモード"機能を活用しよう!
こんな質問してもいいのかな?そんなときは"シャイモード"で投稿!
RX-7とサーバ運用の意外な共通点 並河祐貴さん RX-7とサーバ運用の意外な共通点 並河祐貴さん
Amazon EC2を巧みに使いこなすTIS/SonicGardenの並河さん。「腕一本で食べていきたい」とITエンジニアを目指した。
「ブラックボックスは不安でしょ」 ひろせまさあきさん 「ブラックボックスは不安でしょ」 ひろせまさあきさん
エンジニアが楽しくて仕方がない。オープンソースを組み合わせてシステムを作り上げるのが彼の矜持のようだ。
Perlの地位向上を胸に 牧大輔さん Perlの地位向上を胸に 牧大輔さん
endeworksの牧大輔さんは社団法人JPAを立ち上げ、Perlの企業利用を促進したいという。
偶然からCTOへ ライブドアCTO池邉智洋さん 偶然からCTOへ ライブドアCTO池邉智洋さん
池邉智洋さんはライブドアCTOの技術メンバーを先頭で率いる。「まずはやって見せることも大事」と語る。

新着コメント

paparika
あまり見ないページなので、全然気づきませんでした。
best_clipper
IT系メディアは厳しいですねー
moppo
今までほとんど見たことないフォローされている、フォローし...
takanowo
> 戦う宿命の拳士たちは日々、高みを目指して、学び、変わる...
takanowo
昨晩、友人の日記を見たら予約サイトでHomeが全滅していた...