精确显示一维阵列的大小

时间:2013-09-18 06:36:20

标签: c memory-management dynamic

我在正确显示数组大小时遇到​​问题。 我知道数组大小是256000但是当我进入循环时它显示为8。如果不使用动态分配,将准确显示大小。如何使用动态分配来纠正错误?

1 个答案:

答案 0 :(得分:4)

这将给你10号大小,因为编译器知道它是一个数组;

char foo[10];
int size = sizeof foo;

这将为您提供32位架构的4号大小,因为它是指针的大小。

char *foo = malloc(10 * sizeof(char));
int size = sizeof foo;

此后,foo的使用情况相同。您可以执行foo[2]*foo或两种版本的任何内容。但您可能不应该使用第一个变体&foo的地址。你应该free(foo);有时与第二个。

永远记住:sizeof不是函数,sizeof总是在编译时确定。