作者ocgod (ocgod)
看板C_and_CPP
標題[問題] 關於struct大小與stack的問題
時間Tue Jul 7 13:42:31 2009
我是用gcc
下面這是一個struct的使用,可以編過也可以跑
typedef struct mystruct_t{
float arr[1000];
}MYSTRUCT;
int main(){
MYSTRUCT data;
data.arr[0]=0;
}
不過如果struct的大小設大一點,一樣可以編得過,
但執行時卻會發生segmentation fault,
typedef struct mystruct_t{
float arr[10000000];
}MYSTRUCT;
int main(){
MYSTRUCT data;
data.arr[0]=0;
}
用gdb看發現data的位址不是可以存取的位址,
後來經過朋友指點才知道是stack爆掉,
換用malloc就可以解決了!
請問如果用本來的方法有辦法避免stack爆掉嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.123.102.102
1F:推 ledia:把 stack size limit 設大一點 07/07 13:46
2F:推 f953024:愛用動態記憶配置~ 07/07 18:14
3F:→ ocgod:請問有檢查或防止stack爆掉的方法嗎? 07/07 23:24
4F:推 ledia:可能沒有, 偷看 esp register 不知道行不行 XD 07/08 12:54