首页  >  文章  >  后端开发  >  如何确定 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