首頁  >  文章  >  後端開發  >  如何決定 C 中動態分配數組的大小?

如何決定 C 中動態分配數組的大小?

Susan Sarandon
Susan Sarandon原創
2024-11-06 21:48:03261瀏覽

How Can You Determine the Size of a Dynamically Allocated Array in C  ?

在C 中動態分配後確定數組大小

在C 中,使用new 運算符動態分配的數組本質上不會以程式設計方式公開其大小。這個問題源自於這樣的觀察:delete[] 必須知道分配的陣列的大小才能有效地釋放記憶體。

為什麼沒有內建函數來取得陣列大小?

與在堆疊上聲明的數組不同,其大小可以使用 sizeof() 確定,動態分配的數組的大小在編譯期間是未知的。這是因為運行時或作業系統的記憶體管理器管理分配的內存,而不是編譯器。 sizeof() 作為編譯時常數運行,無法動態計算動態分配數組的大小。

替代策略

儘管C 沒有提供內建的函數來取得陣列的大小,還有其他方法:

  • 指標語意: C 中的陣列衰減為指標。透過操作指針,可以用減法推斷出數組的大小,如下例所示:
int *arr = new int[256];
int *p = &arr[100];
int size = p - arr; // Subtracting pointers yields the size
  • 自訂記憶體管理:如果控制記憶體如果需要管理,可以實現一種自訂記憶體管理方案來追蹤分配的記憶體及其大小。這種方法需要小心處理並引入其自身的複雜性。

影響

缺乏確定 C 語言中動態分配數組大小的標準化方法來自該語言對記憶體管理靈活性和平台獨立性的關注。雖然它在某些場景下存在局限性,但它也允許多種實施策略和優化機會。

以上是如何決定 C 中動態分配數組的大小?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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