簡體   English   中英

數組指針永遠不會出現段錯誤?

[英]Pointer of array never seg fault?

我有一點不明白。

這是我所做的:

float* test = (float*) malloc(4 * sizeof(float) );

然后我試着做

test[100] = 1.0;
printf("%f\n",test[100]);

而且......它起作用了......

我正在等待分段錯誤,但沒有,我不明白為什么。 我想這樣做是為了驗證我的數組是否已正確分配。 真沒想到,可能是我漏了點什么,就上網搜了下,好像大家都有segfault……所以才過來問的。 謝謝

您導致的是未定義的行為 - 在這種情況下,它按預期工作,但以任何方式依賴它都是一個糟糕的主意:編譯器優化或更改操作系統可能會突然導致“奇怪”的行為。 您應該閱讀有關此主題的更多信息,盡管簡而言之,對於未定義的行為,編譯器可以做任何它想做的事情。

我沒有足夠的知識來確定,但我假設您的操作系統為您的程序准備了整個內存頁面。 在 Linux 中,默認為 4 KiB,您訪問的字節數高達 400,因此仍有足夠的空間。 因此,您可能正在訪問為您的程序分配的內存,因為操作系統使用不小於 4 KiB 的內存塊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM