write()実行後にexit()しないとコアダンプする(解決)
昨日の記事、
write()実行後にexit()しないとコアダンプする - kurokuronatto's blog
の疑問が解決したのでメモ。
C言語のプログラムだと、最初にCRT(C Runtime)からmain関数が呼ばれる。
その後main関数終了後のreturnでCRTに処理が戻り、
CRTの中でexit()が呼ばれてプログラムが終了する。
しかしアセンブリ言語の場合にはCRTがないので、自分でexit()を読んでやらないと
プログラムが終了せず、テキスト領域の外にあるコードを実行しようとする。
そこでセグメンテーション違反が発生する。
なるほど、実行領域の違反ってことでセグメエラーになったのね。。
勉強になった。
CRTは、確かCのプログラムでスタティックリンクされるライブラリだったかな?
よく分からないから、また調べてみよ。