C言語[C言語のはじめ方] Part41: アセンブリとの連携と逆アセンブル(objdump) C言語から一歩進んで、コンピュータが実際にどのように動いているか覗いてみよう! こんにちは!C言語の学習もいよいよ大詰めですね。今回は、普段書いているC言語のコードが、コンピュータ内部でどのように扱われているのか、その一端を覗いてみましょう...C言語
C言語[C言語のはじめ方] Part40: gdbでのデバッグ デバッグって何? gdbって何? 🤔 プログラムを書いていると、意図した通りに動かないことがあります。思った結果と違う値が出たり、途中でエラーが出て止まってしまったり… こういったプログラムの誤り(バグ)を見つけて修正する作業をデバッグと呼...C言語
C言語[C言語のはじめ方] Part39: システムコール(open, read, write) オペレーティングシステムと直接対話する方法を学ぼう!はじめに:システムコールって何? 🤔 こんにちは!C言語学習の旅、順調ですか?今回は、普段使っている printf や scanf よりも、もっとコンピュータの深い部分、つまりオペレーティ...C言語
C言語[C言語のはじめ方] Part38: バッファオーバーフローと対策 安全なC言語プログラミングのために知っておきたい重要な脆弱性はじめに:バッファオーバーフローって何? 🤔 バッファオーバーフロー(Buffer Overflow)は、プログラムが用意したメモリ領域(バッファ)に、その容量を超えるデータが書き...C言語
C言語[C言語のはじめ方] Part37: スタックとヒープの概念 はじめに:メモリ管理のキホン 🏠 C言語プログラミングでは、プログラムが動作するために必要な情報を「メモリ」と呼ばれる場所に保存します。このメモリには、大きく分けて「スタック領域」と「ヒープ領域」という2つの重要なエリアがあります。 これら...C言語
C言語[C言語のはじめ方] Part36: 静的ライブラリ(.a)と動的ライブラリ(.so)の作成とリンク こんにちは!C言語学習の旅、今回はStep 8の「コンパイルとビルド」の中から、静的ライブラリと動的ライブラリについて学びます。プログラムが大きくなってくると、コードを部品化して再利用したくなりますよね?ライブラリはまさにそのための仕組みで...C言語
C言語[C言語のはじめ方] Part35: Makefileの作成と使用 はじめにC言語のプログラミング学習、順調に進んでいますか?😊 ソースコードが1つだけのうちは手動でのコンパイルでも問題ありませんが、プロジェクトが大きくなり、複数のソースファイル(.c)やヘッダーファイル(.h)を扱うようになると、コンパイ...C言語
C言語[C言語のはじめ方] Part34: コンパイルの仕組み(.c → .o → 実行ファイル) `.c` ファイルから `.o` ファイル、そして実行可能ファイルへ こんにちは!C言語の学習、順調に進んでいますか?😊 これまで書いてきたC言語のコード(.c ファイル)が、どうやってコンピュータ上で実行できるようになるのか、不思議に思っ...C言語
C言語[C言語のはじめ方] Part33: 小規模プロジェクトの構築(電卓、ToDoリストなど) これまでの知識を総動員して、動くプログラムを作ってみよう! C言語の基本的な文法、配列、関数、ポインタ、構造体、ファイル操作などを学んできましたね!😊 これまでのステップで得た知識は、個別の機能を作るための部品のようなものです。このステップ...C言語
C言語[C言語のはじめ方] Part32: 簡易データベースの実装(構造体 + ファイル) C言語でデータを永続化する方法を学ぼう! これまでのステップで、構造体を使って複雑なデータをまとめたり、ファイル入出力でデータを読み書きする方法を学びましたね。今回は、これらの知識を組み合わせて、簡単な「データベース」を作成する方法を学びま...C言語