[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

タグ

cとerrorに関するmasterqのブックマーク (4)

  • C言語をマスターしたい人はGCCのバージョン14を使いましょう - pyopyopyo - Linuxとかプログラミングの覚え書き -

    C言語(C++を含む)を習得したい人,ポインタを勉強したい人はgcc-14を使いましょう.難しいところは gcc-14 が丁寧に解説してくれます C言語の難しいところ 例を示します.C言語で記述された,たった6行のソースコードです int main() { int buf[10]; buf[10] = 0; return 0; } このソースコードには問題があります.初見でわかるでしょうか? : : : 問題があるのは buf[10]=0 の部分です.C言語でやりがちなミスですが,これがバグやセキュリティホールの原因になります. C言語が難しい理由は二つあります.この手の問題を見逃しやすい点と,この手の問題を理解することが難しい点の二つです gcc 14 に解説してもらいましょう 上記の6行のソースコードをgcc14を使ってコンパイルしてみます ソースコードのファイル名は test.c と

    C言語をマスターしたい人はGCCのバージョン14を使いましょう - pyopyopyo - Linuxとかプログラミングの覚え書き -
    masterq
    masterq 2024/06/16
    "gcc 14を使うと,問題がある場合はその理由をアスキーアートで解説してくれるようになりました"/"オプション -fanalyzer を指定しましょう"
  • enbug diary(2006-07-14) - failmalloc

    _ failmalloc 私は立場上いろんな人のプログラムを見る必要がある。 しかし、とりわけ経験不足な人が書いたコードはエラーチェックが無茶苦茶である。 要するに、失敗することを考えていない。 これには非常にうんざりさせられるが、 そもそも何が原因なのか考えてみた。 失敗するのを見ることがないのがいけない。 これが私の辿り着いた結論である。 実のところ、malloc が当にこけるところなんて、熟練者でさえ滅多に見たことがないんじゃなかろうか。 今日のようにメモリが潤沢になると、その傾向にますます拍車がかかることになる。 そこで、いっそのこと、わざと失敗させてみることにした。 何で今までこういうものがなかったのか、多少不思議ではあるが (私が知らないだけ?)、 30分ぐらいのハックで出来上がった。 それよりウェブページを作成する方がよっぽど時間がかかってしまった。 詳細はウェブの方を見て

    masterq
    masterq 2017/03/18
    まぁ、今なら、#そこで線形型ですよ #そこで分離論理ですよ と回答できるようになりました
  • Failmalloc

    Welcome to failmalloc. This software generates a shared library which can be loaded by LD_PRELOAD or linked at compilation time. The idea behind failmalloc is to demonstrate what really happens if memory allocation fails. Unfortunately, most programs in this world are not robust, mostly because programmers are careless, but sometimes because programmers are too brave. Regardless of whatever reason

  • Success is a Journey, not a Destination: 全てのCプログラマが未定義な振る舞いについて知っておくべきこと #1/3

    [What Every C Programmer Should Know About Undefined Behavior #1/3 の翻訳です。] LLVMでコンパイルしたコードは、最適化を有効にしているとたまにSIGTRAPシグナルを生成するのはなぜなのか、と聞かれることがある。いろいろ調べたあと、(X86での話だが) Clangは "ud2" インストラクションを生成していたことがわかった。"ud2" は__builtin_trap()が生成するインストラクションと同じものだ。[訳注: #UD例外を発生させる命令。ソフトウェアが#UD例外をハンドルできているかテストするために使われる。つまり、ソースコードが未定義な振る舞いを使っていたから、LLVMはud2インストラクションを生成したのであって、LLVMのバグではない、ということ] こういう問題は幾つかあって、すべて、Cの未定義な振る

    masterq
    masterq 2011/12/26
    ちゃんと覚えておかないと。。。
  • 1