[問題] 這樣的語法是不是會出問題

看板C_and_CPP作者 (我想飛)時間13年前 (2010/10/29 22:54), 編輯推噓2(209)
留言11則, 6人參與, 最新討論串1/1
最近遇到一個很奇怪的問題 不知道是問題是在哪, 我寫出以下程式碼: /*------------------------------*/ unsigned char* a[1<<20]; printf("%u",sizeof(a)); /*------------------------------*/ 這樣的code 會造成coredump.......陣列的type並不會影響會不會coredump, 若是用gdb去看sizeof(a) 居然是零, 這樣到底是哪邊出了問題呢??? 1<<20 = 1048576 , 一個unsigned char* 為 4 bytes, 所以陣列總共為 4194304 bytes 4194304 bytes = 4MB(大約) 或是 2*10^22, 對sizeof的return type也沒有overflow, 4MB的記憶體也應該還可以.................... 請版上的先進幫忙解惑一下, 這樣的code到底發生了什麼事情 ......... 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.43.205.3

10/29 23:01, , 1F
4M相當於一個分頁了,放在STACK會出問題吧
10/29 23:01, 1F

10/29 23:06, , 2F
試了一下,可以跑出4194304這結果
10/29 23:06, 2F

10/29 23:09, , 3F
十誡
10/29 23:09, 3F

10/29 23:24, , 4F
這樣寫還蠻怪的
10/29 23:24, 4F

10/29 23:26, , 5F
我這段code是在某個function裡 其中有個原因是要debug
10/29 23:26, 5F

10/29 23:27, , 6F
動態記憶體不是跟heap要嗎?? 要去調max heap size??
10/29 23:27, 6F

10/29 23:31, , 7F
我得再去研究一下 XD 請各位大大再給我一些線索
10/29 23:31, 7F

10/29 23:32, , 8F
..... 喔喔 我是用local variable....試一下malloc好了
10/29 23:32, 8F

10/29 23:37, , 9F
可以用VirtualAlloc
10/29 23:37, 9F

10/30 07:16, , 10F
看看ulimit -s , stack size應該很夠吧
10/30 07:16, 10F

10/31 12:33, , 11F
感謝樓上各位大大 問題解決了 也了解背後發生的事情...感謝!
10/31 12:33, 11F
文章代碼(AID): #1Cok0CF9 (C_and_CPP)