私は次のコードを実行すると:strcmpの行動
#include <stdio.h>
int main(int argc, char *argv[])
{
int p = 0;
p = strcmp(NULL,"foo");
return 0;
}
を私はセグメンテーションフォールトを取得します。エコー$?しかし、私が走るとき
#include <stdio.h>
int main(int argc, char *argv[])
{
int p = 0;
strcmp(NULL,"foo"); // Note removed assignment
return 0;
}
私はセグメンテーションフォールトを取得しません。誰かが光を投げてくれますか?何をやっている
> gcc --version
gcc (GCC) 3.4.6 20060404 (Red Hat 3.4.6-8)
まあ、最適化を有効にするためのコンパイラ設定はしていませんが、自動的に行います。あなたは一所懸命でした。 –
gccは、最適化を有効にしなくても機能するSSAを実行します。 SSAはデッドコードを削除できます。 http://en.wikipedia.org/wiki/Static_single_assignment_form –