当前位置:  开发笔记 > 编程语言 > 正文

变量大小的数组与C中的calloc

如何解决《变量大小的数组与C中的calloc》经验,为你挑选了2个好方法。

关于动态内存的讨论:"C指针和动态内存简介"

作者说:

像这样的存储块可以有效地用作更灵活的阵列.实际上,这种方法在现实世界的C程序中更为常见.它比"可变大小阵列"更具可预测性和灵活性

他正在讨论的内存块类型是这样的:

const int size = 5;
int * array = calloc(size, sizeof(int));

然后使用另一个指针迭代数组:

int * index = array;
for (i = 0; i < size; i++) {
    *index = 1; // or whatever value
    index++;
}

我的问题是这个方法比这样的标准变量大小的数组更好吗?:

int array[variable];

或动态:

char name[] = "Nick";

作者并没有真正阐明为什么我应该更喜欢前一种方法.或者更具体地说:它如何更"可预测和灵活"?



1> Mehrdad Afsh..:

如果声明int array[variable]内存将在堆栈上分配,这对于大型,相对永久的数据结构(例如您可能想要返回的数据结构)不是很好.如果使用数组语法,则不需要手动释放内存,因为它在超出范围时会被释放.calloc另一方面,将在堆上的运行时动态分配内存.一旦你完成它就必须自己释放它.



2> Evan Teran..:

我同意c89不允许的ocdecio

int array[variable]

c99允许某些类型的变量和表达式为数组大小.但除此之外,分配的内容malloc和系列可以使用调整大小realloc.

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有