在C 中動態分配後確定數組大小
在C 中,使用new 運算符動態分配的數組本質上不會以程式設計方式公開其大小。這個問題源自於這樣的觀察:delete[] 必須知道分配的陣列的大小才能有效地釋放記憶體。
為什麼沒有內建函數來取得陣列大小?
與在堆疊上聲明的數組不同,其大小可以使用 sizeof() 確定,動態分配的數組的大小在編譯期間是未知的。這是因為運行時或作業系統的記憶體管理器管理分配的內存,而不是編譯器。 sizeof() 作為編譯時常數運行,無法動態計算動態分配數組的大小。
替代策略
儘管C 沒有提供內建的函數來取得陣列的大小,還有其他方法:
int *arr = new int[256]; int *p = &arr[100]; int size = p - arr; // Subtracting pointers yields the size
影響
缺乏確定 C 語言中動態分配數組大小的標準化方法來自該語言對記憶體管理靈活性和平台獨立性的關注。雖然它在某些場景下存在局限性,但它也允許多種實施策略和優化機會。
以上是如何決定 C 中動態分配數組的大小?的詳細內容。更多資訊請關注PHP中文網其他相關文章!