如何在 C 中找到动态分配数组的大小?

Posted

技术标签:

【中文标题】如何在 C 中找到动态分配数组的大小?【英文标题】:How can i find the size of a dynamically allocated array in C? 【发布时间】:2012-11-15 16:56:16 【问题描述】:

我创建了一个由循环动态分配的数组。然后是一个从数组中读取数字的循环,但我需要知道数组的大小。该数组正确且完全正常工作,并且其中包含正确的值。 我这样定义数组:

int *array;

现在当我想使用它时它不会工作,因为我使用的是指针:

int size = sizeof(array)/sizeof(array[0]);

如何修复它以使其与我的指针一起使用?

【问题讨论】:

【参考方案1】:

我假设您正在使用 new 或 malloc/calloc 之一分配数组。在这种情况下,你不能这样做。您需要在另一个变量中跟踪大小或使用会为您跟踪大小的结构。

【讨论】:

是的,我使用了 malloc,我正在考虑放置一个像 0 这样的变量,然后运行一个循环,直到找到 0。虽然它会起作用,但我的目标是让数组没有这些标识符。但是谢谢:)

以上是关于如何在 C 中找到动态分配数组的大小?的主要内容,如果未能解决你的问题,请参考以下文章

C++ 如何从动态分配中获取数组大小?

怎么动态分配指针数组

c语言中啥是动态分配内存?

如何在 C++ 中动态分配数组

如何调整类中动态分配的数组的大小?

通过动态分配创建数组后,在C中通过realloc改变内存大小时出现问题