在 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中文网其他相关文章!