在C 中重新分配記憶體
在C 中使用動態記憶體分配時,開發人員經常遇到需要重新分配記憶體以適應數據變化的情況尺寸。與 C 等語言相比,C 沒有提供明確的 realloc 函數。
考慮替代方案
刪除目前指標並分配一個更大大小的新指標是由於效率低下,這不是最佳解決方案。下面是使用標準庫的更好方法。
使用標準模板化函式庫 (STL) 向量
STL 向量提供了一種處理動態記憶體分配和調整大小的便捷方法。它們透過調整大小成員函數提供有效的重新分配功能。以下是如何使用向量重新分配:
程式碼轉換:
// Old C code using realloc Type* t = (Type*)malloc(sizeof(Type)*n) memset(t, 0, sizeof(Type)*m) // New C++ code using std::vector std::vector<Type> t(n, 0); // Resizing in C using realloc t = (Type*)realloc(t, sizeof(Type) * n2); // Resizing in C++ using vector::resize t.resize(n2);
使用向量呼叫函數:
到將向量傳遞給函數,使用以下命令語法:
Foo(&t[0]); // Instead of Foo(t)
這確保了與需要指標參數的函數參數的兼容性。
STL 向量的優點
使用STL 向量進行記憶體重新分配一些優點:
以上是C 開發人員如何有效率地重新分配記憶體?的詳細內容。更多資訊請關注PHP中文網其他相關文章!