孔明の罠
C/C++で配列を使ってると誰もが悩むところ
#include<stdio.h> int main() { int n[640*480]; int i=0; printf("%d",i); return 0; }
これを実行すると何も表示されない\(^o^)/
int n[640*480];のところでスタックオーバーフローになってi のメモリが確保されてない(´・ω・`)
Javaとかだとjava.lang.OutOfMemoryErrorを出してくれるから気にしてなかったけど
C/C++は何事もなかったように中断するからキツイ
_,,:-ー''" ̄ ̄ ̄ `ヽ、 ,r'" `ヽ. __,,::r'7" ::. ヽ_ ゙l | :: ゙) 7 | ヽ`l :: /ノ ) .| ヾミ,l _;;-==ェ;、 ,,,,,,,,,,,,,,,_ ヒ-彡| 〉"l,_l "-ー:ェェヮ;::) f';;_-ェェ-ニ ゙レr-{ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | ヽ"::::''  ̄´.::;i, i `'' ̄ r';' } | 久々にワロタ . ゙N l ::. ....:;イ;:' l 、 ,l,フ ノ | こういう罠が沢山ある . |_i"ヽ;:...:::/ ゙'''=-='''´`ヽ. /i l" < のが昔のCなんだよな今の新参は昔の .| ::゙l ::´~===' '===''` ,il" .|'". | Cを知らないから困る .{ ::| 、 :: `::=====::" , il | \________ /ト、 :|. ゙l;: ,i' ,l' ノト、 / .| \ゝ、゙l;: ,,/;;,ノ;r'" :| \ '" | `''-、`'ー--─'";;-'''" ,| \_
サーセンwwwwwwww
これを解決するにはCならmallocあたりを使えばおk
#include<stdio.h> #include <stdlib.h> int main() { int* n = (int*)malloc(10000000000000000000000000000); int i =0; printf("%d",i); free(n); return 0; } //実行結果 //0
でもJavaみたいにガーベジコレクションはないからfreeを忘れるとメモリリークが起こるYO!!
(C++ならnew〜delete)