【初心者向け】危険なのに避けられない C 言語の心折設計



C 言語のポインターやメモリーについて紫様に解説していただきました!
私も C 言語を勉強してプログラムのことにもっと詳しくなりたいです。
でも脆弱性はこわいですね。どう勉強したらいいんでしょうか。

まだの方はぜひチャンネル登録と高評価をお願いします!
コメントで感想や質問を書いてもらえると嬉しいです!

Twitter

Instagram

ニコニコ動画版

#やくもけ #ゆっくり解説 #プログラミング #C言語

――――――――――――――――――――――――――――――――

本コンテンツは東方 Project の二次創作です。

source

24 Comments

  1. 配列a[n]は人間のための糖衣構文でしかなく、内部的にはa+nと同じで、n[a]と書いても同じようにアクセスできると聞いた時には面白いと思った。

  2. 昔は危険をさけるためのチェック機能を省いてでも早く動くのが重視されていたんですね。
    最適化が化け物みたいに上手いので、一般プログラマーがアセンブリコード書くより高速なバイナリを生成できるのは凄いと思いました。

  3. sprintfは".*s"、で徹底してましたね。

    ポインタはメモリマップドIOで便利、例えば0x80000000がVRAMだと
    char *ptr=0x80000000;memset(ptr, 0xff, 256);でライン描画みたいなイメージ

    初心者泣かせは64bit対応とアライン問題で、奇数アドレスによるバスエラーとか

    しかも開発環境デバッグオプションだと露呈せずに本番でのみ発生とか。懐かしいですね。

  4. プログラミングRustの序文で、
    「有名なプロジェクトのコード含め、C言語で書かれたほとんどのプログラムが未定義動作を行っている」と書かれているのを見てゾッとした

  5. Cが理解出来れば最新の高級言語がなんでそういう実装になってるのかも理解出来て楽しい
    でもCやって挫折するぐらいなら
    わかりやすい言語をやった方がいいのかもしれない…

  6. まあC言語を例えると、申し訳程度の安全装置の付いた重機関銃みたいなもんで。配列とか文字列とか扱いを間違えると、全弾打ち尽くすまで暴発=暴走しまくると。が、これさえあればとりあえずはコンピュータを操ることができる、他の言語の援軍が来るまで持ちこたえることができる有用な武器という感じ。今はOSが止めてくれますが、昔はアプリから簡単にパソコンを暴走させることができました=何回リセット・ボタンを押したことやら。

  7. C言語はアセンブラより視認性が良くて高級言語では扱えないメモリ空間を直接扱える【中級言語]だから「脆弱性」と呼ぶのは間違っている。
    組込み用途など少ないメモリ空間で要求される機能を埋める必要があるからの仕様です。
    嘘だと思うならROM256Kbyte、RAM256kbyteで制御用プログラムを書いてみると良い

  8. 何故か急に上がってきた
    業務で書かれるC++のクラス設計があまりに酷すぎて、C言語で関数型プログラミングに回帰したいなぁと思っていたけど参照がないのすっかり忘れてた
    メモリ操作が難しいのもあるけど、パッケージマネージャやテストフレームワークといった開発環境も自分で整える必要があるのがC/C++の面倒なところですね

  9. C++の方が色々と優秀なんだけど学習コストが高すぎるのとメモリ問題が解決してない
    それを更に解決したのがRust
    こいつらは速度を保ったまま安全性と使いやすさが向上してるから現代だとRust一択なんだよね。
    ただ、全ての優秀な言語の祖なので構文を覚えておくとすごく便利だし、脆弱性無視すれば思ったより簡単だから学生に教えるのにピッタリ。

  10. C言語はカーソルのメモリ操作といった禁断の行為をしなければ、機械語に近いためアセンブリをいじれたり便利である。でも最近そんな禁断の行為をした馬鹿がいるんですよね…藤徳Dというんですけど

  11. ランタイムでなるべく余計な処理をしないRustが、配列範囲の管理だけはランタイムでもやる辺り、本当に危険なんだなって……

  12. 40年前に会社に入社したとき
    装置の制御はアセンブリ言語で行っていました。
    私は学生の時にCP/Mで走るC言語を学んでいたので
    会社を説得してC言語コンパイラを導入しました。
    当然 ソフト開発の効率が大きく上がりました。
    その後 C++言語も販売したので それも導入しました。

  13. 中学生からのプログラム歴40年以上のアマチュアC言語プログラマーです。
    バッファオーバーフローには非常に気を使いますね。受け取ったデータが、用意していた領域サイズを超えるとヒープ領域だけでなくプログラムが格納されている領域まで塗りつぶされてしまう。もしここに機械語命令として意味のあるデータを送り込まれたらプログラムを書き換えられてしまう。

Leave a Reply

Your email address will not be published. Required fields are marked *

You might like

© 2026 Cantinho do Vídeo - WordPress Video Theme by WPEnjoy