看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) BCB on Windows Dear all 想跟大家討論一個問題 請問以下為何還可以執行? 小弟在BCB上面編code 寫tool 今天才發現自己宣告一個buffer array才4096個 buf array是用來放data到一塊memory table UI裡面 char buf[4096] 但是卻可以access超過4095 for(i=0;i<8192;i++) buf[i] ----> 居然沒事??? 照理說buf[4096]~buf[8191]就會出問題 但是居然都沒有出現錯誤 而且tool可以正常使用 我檢查過超過4096之後的值都還顯示正確 目前還無法理解為什麼沒有出錯 是BCB compiler有動什麼手腳讓我這樣寫不會出錯嗎? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 42.78.229.190
james732:你跟房東租了4096間房間,硬是要住8192間的話其實不會管 11/16 16:06
james732:不過後面不屬於你的房間,本來有什麼東西,有沒有別人住 11/16 16:07
james732:就這麼搬進去會有什麼後果,就是自己要承擔的了.... 11/16 16:07
azureblaze:你的程式開始執行的時後會跟作業系統要一塊空間 11/16 16:14
azureblaze:(1MB之類的,看設定) 你之後記憶體如果不用new或malloc 11/16 16:15
azureblaze:都是重複利用這塊空間(stack) 11/16 16:16
azureblaze:所以如果你不超過一開始stack的大小 11/16 16:16
azureblaze:作業系統就無從得知你是怎樣亂搞 11/16 16:17
damody:4097~8192都是鬼屋 11/16 16:18
azureblaze:你可以實驗看看要超出多少才會出事 11/16 16:19
azureblaze:或是看看int a[10];int b[10];改超過a b會怎樣 11/16 16:21