タグ

Cに関するochikunのブックマーク (2)

  • C言語の char x[] と, char *x の違いを理解するためのコード.解答編 - ブログ(笑)

    C言語の char x[] と, char *x の違いを理解するためのコードの解答ですが,ポイントは,「領域」にあります. プログラムは,(色んな分け方がありますが)メモリ上ではいくつかの領域に分かれています. コード領域:プログラムのコード体が入っている領域 定数領域:定数(リテラル)のための領域 スタック領域:変数や関数呼び出しなどに用いられる領域 ヒープ領域:動的にメモリを確保するとき用の領域 などがあります. ここで, int main(){ char x[] = "hoge"; char *y = "hoge"; x[0]='a'; y[0]='a'; return 0; } の2行目, char x[] = "hoge"; では,文字列"hoge"5バイト分*1の配列xをスタック領域に確保し,そこへ'h','o','g','e','\0'の文字列を格納しています. それに対

    C言語の char x[] と, char *x の違いを理解するためのコード.解答編 - ブログ(笑)
  • C/C++ セキュアコーディングセミナー資料 | JPCERT コーディネーションセンター

    これまでにC/C++ セキュアコーディングセミナーで使用した講義資料を公開しています。2010年度にセミナを実施した、文字列、整数、動的メモリ管理、書式指定文字列、CERT C セキュアコーディングスタンダード、ROSE については、それぞれ最新版の資料を掲載しています。 文字列 ユーザとソフトウエア間に発生するデータのやりとりの大部分は文字列によって行われます。 また、プログラム間でのデータ交換も文字列形式で行われるようになり、その結果、文字列表現や文字列管理、文字列操作における弱点がソフトウエア脆弱性を生み出しています。 文字列では、C/C++ 言語における文字列操作、一般的なセキュリティ上の欠陥と、その結果発生する脆弱性と対処方法について解説します。 C/C++ における文字列の特性 犯しやすい文字列操作の間違い 文字列の脆弱性 プロセスのメモリ構成 スタック破壊の仕組み コードイン

    C/C++ セキュアコーディングセミナー資料 | JPCERT コーディネーションセンター
  • 1