http://www-ee.eng.hawaii.edu/~tep/EE160/Book/chap14/subsection2.1.1.8.html このページには、渡されたローカル変数とパラメーターがスタックに割り当てられていると書かれているので、試してみました:
#include <stdio.h>
#include <stdlib.h>
#define A 2000000
#define B 2
typedef struct {
int a[A][A];
} st;
void fun(st s){}
void main()
{
st s;
//fun(s);
}
コンパイルして実行した後、エラーは報告されません。しかし、私がアノテーションを解除する//fun(s)
と、SIGSEGVがキャッチされます。誰でも理由がわかりますか?