」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何確定 C++ 中動態分配數組的大小?

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

發佈於2024-11-09
瀏覽:802

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 語言中動態分配數組的大小來自該語言對內存管理靈活性和平台獨立性的關注。雖然它在某些場景中存在局限性,但它也允許多種實施策略和優化機會。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3