2011-12-26 96 views
0

我開始學習c,並找不到處理內存違例的明確示例。目前我寫了一段使用變量和數組的代碼。我給變量賦值,然後用一組初始值填充數組。但是,數組中的其中一個值與變量保存在相同的地址,因此會覆蓋該變量。處理c中的數據違規

可能有人請給我如何處理這樣的錯誤一個簡單的例子,或避免這樣的錯誤....感謝

+1

你能提供一些代碼嗎? – Odys 2011-12-26 09:59:12

回答

2

這是一個猜測,但似乎幾乎你的問題。
您正在覆蓋數組的範圍之外。

C不保護你不會超出分配數組的範圍。你作爲程序員必須確保你不這樣做。否則將導致未定義行爲,然後任何事情都可能發生(字面上)您的程序可能工作或可能不工作或顯示異常行爲。

對於如:

int arr[10]; 

聲明的10整數數組和有效的下標範圍爲09
你應該確保你的程序使用有效下標。

3

一旦在C中發生了內存違規等錯誤,您就無法「處理」它。所以,你必須首先避免它。做你想做的事情的方法如下:

int a[10]; 
int i; 
for(i = 0; i < 10; i++) 
    a[i] = 5; 
+0

是否有可能首先避免內存衝突。我的意思是有可能在定義數組時檢查數組中的每個地址是否都是空閒的並且尚未被使用。如果是這樣,我該怎麼做....謝謝 – Ranjeet 2011-12-26 16:14:19

+0

有沒有這樣的事情:「定義數組時,檢查數組中的每個地址是免費的,沒有被使用」。當你說'int a [10]'時,你會得到一個完全有效的數組,其中所有10個元素都保證在那裏,並且可供你使用。但不超過10。 – 2011-12-26 18:10:40