関連タグで絞り込む (1)

タグの絞り込みを解除

cに関するpowerbombkunのブックマーク (20)

  • ソースコードの脆弱性をチェックするツール、IPAが無償公開。C言語に対応

    IPA(独立行政法人情報処理推進機構)は、 C言語で作成されたソースコードに脆弱性が存在しないかどうかを検査するツール「iCodeChecker」を公開しました。無償で利用できます。 iCodeCheckerは、ソースコードの脆弱性が存在する箇所を検出し、修正例や脆弱性が悪用された場合の脅威についてのレポートを出力するツール。プレスリリースから引用します。 ツールは、脆弱性やソースコード検査技術を学習したい学生や開発者を対象に、利用者自身が作成したソースコード(C言語)を検査することできます。 ツールでは、ソースコードの脆弱性が存在する箇所を検出し、修正例や脆弱性が悪用された場合の脅威について解析したレポートを出力します。利用者はツールを通して、脆弱性を学習するとともに、ソースコードセキュリティ検査技術の有効的な活用方法を習得することができます。 配布形式は、VMイメージ、パッケージ

    ソースコードの脆弱性をチェックするツール、IPAが無償公開。C言語に対応
  • Cでのポインタの読み方

    Cでのポインタの読み方 Cのポインタの読み方は、ルールを知らないと摩訶不思議です。 ルールを覚えれば、 int (*p[5])[3]; char (*(*fp)(void))(int); なんてのも解読する事ができます。 大事な前程 ポインタを読む際には、「英語で読む」必要があります。 「え~、英語~」 と思う方もいるかもしれませんが、逆に日語で読む方が大変です。 基ルール ルール 後置演算子が優先。 関数の() 配列の[] 前置はあとで。 要は、「後ろに何かあったら、後ろが優先」です。 演算子の英語での読み方 * pointer to ... () function returning ... [] array of ... Lesson 1 まず、演算子が単独で出てくる場合です。 Lesson 1-1 pointer to ... int *p; これは、まずpを見ましょう。 i

  • Cにおける識別子の有効範囲と変数の生存期間

    #include <stdio.h> #include <stdlib.h> double add(const double a, const double b) { // a = 0.3; エラー return a + b; } int main(void) { double x = 0.1; double y = 0.2; double sum = add(x, y); printf("%f\n", sum); // 0.300000 return EXIT_SUCCESS; } 仮引数aには0.1が、bには0.2が入ります。関数addの中ではaとbの値を変更することができません。これには2つのメリットがあります。 誤ってaとbの値を変更してしまうようなコードを書いてしまうことがない(たとえ書いてしまってもコンパイラが検出してくれる) 関数addの実装を知らない人にも、関数add内でa

    Cにおける識別子の有効範囲と変数の生存期間
  • malloc.c ||| Apribase

    malloc を実装する方法として、フリーリストを用意し、空きヒープ領域を管理する方法があります。

    malloc.c ||| Apribase
  • MALLOC

    時事ネタ いや、「今、fj.comp.lang.cが熱い!」という話は ちょっと前から聞き及んではいたのですが、 流量が尋常じゃないらしいので、 忙しさもあって読むのを控えていたんですけど、 先日、大筋を拾い読みしてみました。 確かに熱いですねえ。 いったん収束するかなあ、と思ったら、なんかまた泥沼の気配が(^^; fjを読んでない人のために説明すると(って、 私も普段はあんまり読んでないんですが)、 「malloc()で確保した領域は、必ずfree()で解放しなきゃいけないか?」という 話題でして、「exit()する時には、OSが解放してくれるんだから 別にfree()しなくてもいいじゃん」という主張と、 「いや、malloc()には常に対になるfree()があるべきだ」という主張があって、 議論を呼んでいたのでした。 んで、私がどう思うかなんですが、 私は面倒臭がりなので、free()

  • C言語関数辞典 - vprintf

  • #include の魔力 - Cube Lilac

    何気なく呟いた言葉が確変状態になっていました。 それで、反応を眺めていると「何をやってるか分からない」と言うものがいくつかあったので、一応簡単な補足説明を載せておきます。 #include は指定したファイルの内容をその位置に追加します。 1, 2, 3, 4, 5, 6, 7, 8, 9,例えば、上記の内容を hoge.csv と言う名前で保存して、 int hoge[] = { #include "hoge.csv" }; と記述すると、(プリプロセスが終了すると)以下のように記述した事と同じになります*1。 int hoge[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, }; このように、#include を利用することによって、内容が変化しない*2データ配列などの定義を自力で打ち込んだりコピペしたりせずに済むようになります(なることがあります)。s/int/co

    #include の魔力 - Cube Lilac
  • モダンなC, C++の開発環境の構築方法 - 考える人、コードを書く人

    まだC, C++がないようなので書いてみた。主にLinux(DebianとかUbuntu)での環境構築について。 コンパイラ まずはapt-getでコンパイラをインストールする。UbuntuやDebianなら以下のコマンドでgccやg++および標準ライブラリ等がインストールされる。 $ sudo apt-get install build-essential デバッグツール デバッガおよびデバッグツールは少なくとも以下の三つは入れる。(あとltraceも欲しいかな?) GDB 言わずと知れたGNUのデバッガ Valgrind メモリリークや不正メモリアクセスの検出 strace システムコールのトレース $ sudo apt-get install gdb valgrind strace ビルドツール C, C++のビルドツールといえばまずmakeが浮かぶけど、最近ではSConsやCMak

    モダンなC, C++の開発環境の構築方法 - 考える人、コードを書く人
  • IPA ISEC セキュア・プログラミング講座:C/C++言語編 第1章 総論:ツールの利用

    第1章 総論 ツールの利用 セキュリティ対策の各場面でツールの利用が有効である。例えば、ソースコードを記述する場面では、対策されたランタイムライブラリの利用、ソースコード中の脆弱性が疑われる箇所を指摘してくれる静的検査ツール、ヒープのハンドリングの誤りを指摘してくれる動的検査ツール等がある。また、運用環境においても防御機能が利用できる場合がある。 ツールを利用する場面 ツールを使用する場面として、次の4つの場面が想定できる。 ソースコード記述時 脆弱性を生じにくいソースコード記述の支援 ソースコード記述後 記述したソースコードからの脆弱性の検出 デバッグ時 スタックやヒープにおける領域あふれの検出 運用時 運用環境に組み込まれている防御策の利用 ソースコード記述時に利用できるツール 脆弱性を生じにくいソースコードを記述しようとする際、従来のランタイムライブラリの代わりに「対策されたランタイ

  • 3.1 配列の要素数を返す. - C/C++ 関数・マクロ集 ((ほぼ?) 処理系・OS 非依存)

    「C/C++ 関数・マクロ集」というタイトルですが, そのうちのいくつかはC専用だったりします.(苦笑) 2007/06/24(日) 追記 高木さんより, Cの規格上移植性に問題がある点をご指摘いただいたので, 現在修正中です. (たくさんあります….orz) とはいってもその多くは, めったにお目にかかれないような珍しい処理系とか, 「そんなの実在するの?」という処理系に移植する場合の話なので, 実用上ほとんどの場合は問題ないと思います. (一部そうとはいえないものもありますが.) Cの規格に照らして完全に「処理系・OS 非依存」 にするのは困難な場合もあり, 完璧な移植性にこだわるあまりプログラムが書けなくなっては末転倒なので, タイトルに「ほぼ?」を入れました.orz 2007/06/21(木) 追記 このページを含め,私が C/C++ 関連記事を書くに当たりたびたび参考に&リンク

  • 最新Cコンパイラーの最適化事情 - Radium Software

    State of the art C compiler optimization tricks, Felix von Leitner, Linux Kongress 2009. 最近のCコンパイラーの最適化能力についてまとめたプレゼンテーション。定数の扱いやインライン展開などの基的な項目から始まって,分岐の削除やベクトル化, SIMD 化など,最新のコンパイラーに搭載されている様々な機能について調べている。 この手の分岐の削除はほとんどのコンパイラーで有効らしい。 ベクトル化については gcc がだいぶ頑張っている印象。 「gcc は全プラットフォームにおいてビデオコーデックプログラマーより賢い」 これらの最適化が実際のコードでどのように機能するか気になって逆アセンブリコードを覗いてみる人も少なくないと思うけれど,それを代わりにやってくれた感じだ。この手の話題に興味がある人ならば,目を通

    最新Cコンパイラーの最適化事情 - Radium Software
  • 2008-02-11 - 悟茶辞苑ッ

  • http://1978th.net/tech/promenade.cgi?id=39

  • Cプリプロセッサメタプログラミングで、文字列系泥沼関数型プログラミング - 簡潔なQ

    今年の文化祭で書いた記事です。 - C言語といえば、いやなイメージ、過去の遺産といった感じがあるかもしれません。 C言語のネガティブな側面というと、やはりポインタやメモリ管理などが難しい、ということが思いつくかもしれません。 しかし、C言語のポインタは表記に騙されやすいだけで、仕組み自体は全く難しくありません。 文法も、どこぞのPerlC++と比べたら屁でもない単純さです。 実のところ、仕様が煩雑で難しいのは、Cプリプロセッサなのであります。 普段からあまり複雑な使いかたをしないから気づかないかもしれませんが、Cプリプロセッサの置換処理は、欺瞞と裏切りに満ちた世界なのです。 これが進化するとテンプレートなどといったもっと面白いものになるのですが、今回はCプリプロセッサで計算をしちゃったりするところまで試しにやってみましょう。 (なお、GCCにより実験的に調べた記事なので、他のCコンパイラ

    Cプリプロセッサメタプログラミングで、文字列系泥沼関数型プログラミング - 簡潔なQ
  • Hey! Java Programming! //移植性//

    プログラムを製作する環境とは違った環境で使うことを前提としたプログラムは、移植に関していろいろな問題が発生します。移植の問題を回避したいのであれば、まず Java が使えないか考えてみてください。Java は高い移植性を持っていて、ここで紹介している移植問題のほとんどをクリアしています。 Windows で製作したプログラムを UNIX で使おうと思うと、たとえ ANSI C に準拠したプログラムを製作しても環境の違いによってさまざまな問題が発生してきます。このような移植を前提としたプログラムを作ると言う事は、二つの異なる環境でプログラムを作ると言う事で、両方の環境に付いてよく知っておかなければなりません。 プログラム移植の最初の問題は、移植先のコンパイラでコンパイルできるかどうかと言う事です。純粋に ANSI C で定義されている機能しか使用していなければこれはクリアできるでしょう。しか

  • 若葉プログラミング塾 ヘッダファイル一覧 Top

    ANSI/ISO 9899-1990 準拠 規格について 用語解説 ここでは、ANSI C規格で定義されている関数の働きを調べることができる。 また、関数でなくとも、規格でヘッダーファイルに定義されている識別子は載せてある。 ここに載っていなくとも、"_"で始まり二文字目が英大文字か"_"の識別子は使ってはいけないことに注意せよ。 なお、宣言自体はコンパイラに付属のヘッダーファイルに書いてあるので、必要なら参照するべし。 アルファベット順に探すならこちら。 関数一覧 常に定義されるマクロ __LINE__ __FILE__ __DATE__ __TIME__ __STDC__ <errno.h> エラー処理 EDOM ERANGE errno <float.h> 浮動小数点演算の限界 FLT_ROUNDS DBL_DIG DBL_MANT_DIG DBL_MAX_10_EXP DBL_M

  • Let’s use doxygen!

    はじめに プログラマには、ドキュメント、とくにプログラムの内部仕様書を書くのが苦手、 という人が多い。 その理由は明らかであって、そもそも、ソースコードに (バグも含めて)*1 すべての仕様が子細もらさず書かれているのに、なぜ、さらにそれと独立した仕様書が必要なのかと、 (半ば気で) 思ってしまうからである。 ソースコードと独立にメンテナンスをしなければならないような仕様書は、 いずれソースコードと整合性が取れなくなって、無意味ならまだしも、 かえって害をなす存在となり果てることもある、ということを、 彼らは経験的に理解しているのである。 (*1) Ruby の作者である、まつもとゆきひろ氏は、 その著者『オブジェクト指向スクリプト言語 Ruby』の中の「付録C Ruby 用語集」で、 次のように書いている: ドキュメント まつもとの苦手なもの。彼は普段から「ソースがドキュメントだ。

  • http://www.biwa.ne.jp/~chu2/laboratory/cpp.html

  • STLのページ

    角のページへ戻る STL(Standard Template Library) C++の標準テンプレートライブラリ、STLのページです。 2003/6/7 コンテナ全ページ標準に合わせて修正 目次(と予定) 更新履歴 はじめに STLとは? '99 11/07 作成 その前にC++で知っておかなければならないこと 馴染みがない(かもしれない)単語 '99 9/23 わずかに修正 テンプレート(template<>) 2001 1/31 更新 環境 '99 2/20 VCでSGI_STLを使う、BeOS、egcs等 使い方 イテレータ(反復子)の使い方 '99 6/19 更新 関数オブジェクトの使い方 '99 7/4 mem_fun()の使い方追加 早見表 STLで使う主なクラス '99 6/13 各クラスの説明、ヘッダをまとめた STLで使われる名前 '99 6/13 微妙に更

  • C言語ワンポイント講座:ポインタと派生型徹底入門 第3章

    #include<stdio.h> double f1( double x ) { return x+1.0; } int main( void ) { double (*p)(double) = f1; /* 関数を指すポインタpに関数のアドレスf1をセット */ double ans = p( 5.0 ); /* 関数を指すポインタpに格納されているアドレスの関数を指定されたパラメータで呼び出す */ printf( "p(5.0)=%g\n", ans ); return 0; }

  • 1