忍者ブログ

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

スタックオーバーフローとは

イクスの技(?)に「スタック・オーバーレイ」というものがありますが、これって元ネタは「スタックオーバーフロー」なのでは?と思いました。「スタックオーバーフロー」はプログラミング関係の用語です。せっかくなので(?)ちょっと説明を書いてみました。割とふわっとした感じの説明なのですが、誰かの参考になれば幸いです。
最初ツイッターでだらだら喋っていたのでツイッター口調(?)ですみません……。気が向いたら直すかもです。
  
長いのでたたみます
 

「スタック」は「スタック領域」のことです。メモリの中にいくつか○○領域ってがあるんだけどその内の一つ
まぁそういう場所があるんだなぐらいで大丈夫です
 
その「スタック領域」で起きるオーバーフローが「スタックオーバーフロー」ですね
 
スタック領域には、ある処理を実行したときの結果を格納するんですけど、その結果が領域の範囲を超えちゃうとオーバーフローしてメモリが爆発します(爆発はしない)
 
例えば1+2する処理があったとして、その結果をスタック領域に格納するんですよ 
1+2処理の結果は3じゃないですか 
領域は3以上あれば結果を収めることができるんですよね
(ややこしくなるので単位については考えないものとする)
 
けどもしも、 1+4処理の結果 = 5 を格納したいのに、入れる場所のサイズが3しかなかったらはみ出しちゃいますよね こんな感じでオーバーフローします
 
「処理の結果を入れる場所の許容量を超えた処理」をしちゃうとオーバーフローするって感じですかね。結果を入れる場所がスタック領域
 
で、許容量を超える処理がどうして起こるかっていうと、いろいろあるけど、無限ループっていうのがあってですねぇ…
 
さっき「1+2する処理」のことを「1+2処理」って言ってたけど、一連の処理の固まりに名前をつけられるんですね。
例えば、1+2をした後に今度は3+4もしたいぜ!ってときに1+2する処理と3+4する処理の2つをまとめて「処理A」って名前をつけられるんです。
で、「処理Aを実行する!」って言えば、1+2も3+4も一度にやってくれるんですけど
 
なんと「処理A」の中に「処理A」を実行する、みたいなことも指示できちゃうんですよね…
"1+2する→3+4する→処理Aする"までを「処理A」にできちゃうんですね…何言ってんだお前
無限ループが起こると、処理Aの結果を格納する場所に、処理Aが実行される度に延々と結果が格納されうわあぁぁぁぁぁあぁ(爆発)って感じになっちゃうんすね
爆発するとスタック領域をはみ出して、周囲の領域までに処理結果の数値が入ってしまいます
✕✕領域も✕✕領域で本来別の使い途がある場所なので、そこにスタック領域からはみ出た数値があると「誰だてめぇどこ中だあーん」ってなっちゃうんですよね。これでエラーが出たりバグったりしますくわばらくわばら
 
スタックオーバーフローについてはこんなところです
同じ処理を何度も繰り返すなどして処理の結果が膨大になった結果、処理の結果を入れる場所に収まりきらなくなってしまう という感じです
 
最後にスタック・オーバーレイに戻る
スタック・オーバーレイのスタックがこの場合何を指すかわからないけど(イクスの身体とかかな?)、オーバーレイを何度もすることで、許容量を超えた力が身体から溢れる→世界中にイクスの力が広がる→鏡殻変動みたいな感じなのかな〜〜とぼんやり思ってます
 
以上、ふわっとした説明ですみません!割といろいろ端折ってます…なんとなく…伝われば…嬉しいな…
ご清聴ありがとうございました!

拍手[0回]

PR