首頁 >後端開發 >C++ >如何在沒有動態記憶體分配的情況下在 C 中聲明運行時大小的陣列?

如何在沒有動態記憶體分配的情況下在 C 中聲明運行時大小的陣列?

DDD
DDD原創
2024-12-20 14:08:17675瀏覽

How Can I Declare a Run-Time Sized Array in C   without Dynamic Memory Allocation?

運行時無需動態分配的數組大小:C99 創新

在 C 中,聲明具有運行時確定大小的數組的概念經常引起關注。然而,最近遇到的一個特殊的程式碼片段引發了一個問題:如何在不動態分配的情況下聲明數組,同時在運行時指定其大小?

考慮以下 C 程式碼:

int main(int argc, char **argv)
{
    size_t size;
    cin >> size;
    int array[size];
    for (size_t i = 0; i < size; i++)
    {
        array[i] = i;
        cout << i << endl;
    }

    return 0;
}

GCC 等編譯器採用了 C99 中允許可變大小數組的功能。這項創新功能使得可以在堆疊上聲明數組,其大小可以在執行期間確定。但是,與使用 new 或 malloc 進行動態分配不同,可變大小的數組在堆疊上分配內存,類似於聲明具有固定大小的數組。

可變大小的陣列比動態分配具有效能優勢,因為它們避免了堆記憶體管理的開銷。透過在堆疊上分配內存,這些數組減少了內存碎片的機會並增強了程式性能。

需要強調的是,此功能是 C99 獨有的,舊版的 C 語言不支援。因此,如果您遇到依賴可變大小數組的程式碼,請確保使用符合 C99 的編譯器進行編譯,以避免儲存大小錯誤。

以上是如何在沒有動態記憶體分配的情況下在 C 中聲明運行時大小的陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn