在C语言中,什么时候应该使用malloc?

9

可能是重复问题:
在C语言中何时应该使用malloc,何时不应该使用?

您好,我是C语言的新手,发现了malloc函数。我在工作中听到有些人说在某些情况下必须使用malloc,而其他人则说在另一些情况下不需要使用它。所以我的问题是:何时应该使用malloc? 对于一个新手程序员来说,这可能是一个愚蠢的问题,但对于C语言的新手来说,这很困惑!


2
@kevin:当你提出C语言问题时,请不要打上C++标签。 - Björn Pollex
这是一个C问题还是一个C++问题?下定决心吧。 - Lightness Races in Orbit
@kevin:不,它们是非常不同的、相关但独立的语言。 - Lightness Races in Orbit
@kevin:它们完全不同。如果那样的话,我们可能会有一个单一的 C/C++ 标签。 - Björn Pollex
@Space_C0wb0y:如果那是这样的话,他们只会有一个名字。 - Lightness Races in Orbit
显示剩余3条评论
2个回答

13

使用malloc()函数可以动态分配内存。如果你事先不知道需要为某些东西分配多少内存,这将非常有用。

如果你已经知道需要分配多少内存,可以进行静态分配,例如:

int my_table[10]; // Allocates a table of ten ints.

如果您不知道需要存储多少个整数,可以这样做:
int *my_table;
// During execution you somehow find out the number and store to the "count" variable
my_table = (int*) malloc(sizeof(int)*count);
// Then you would use the table and after you don't need it anymore you say
free(my_table);

7
我知道这个问题有些旧了,但是出于好奇,你不仅可以使用 "int my_table[count]" 来创建数组吗?如果可以的话,为什么在这个例子中要使用 malloc 函数呢? - John Powers
@JohnPowers 如果你还感兴趣的话,可以看一下这个链接:https://dev59.com/aK3la4cB1Zd3GeqPGg5Z#51451640。虽然有点晚了,但希望对你有所帮助 :) - Daksh Shah
@JohnPowers编译器会感到不满,因为它想要在编译时知道大小,而不是在运行时。 - RhythmInk

9

主要用途之一是在你处理一个项目列表时,而列表的大小未知。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接