我试图理解 C 函数malloc
和free
. 我知道这已经在 StackOverflow 上讨论了很多。但是,我想我现在有点知道这些功能的作用。我想知道为什么要使用它们。我们来看看这段代码:
int n = 10;
char* array;
array = (char*) malloc(n * sizeof(char));
// Check whether memory could be allocated or not...
// Do whatever with array...
free(array);
array = NULL;
我创建了一个我称之为 char 类型的指针array
。然后我曾经malloc
找到一块当前未使用且(10 * sizeof(char))
字节大的内存。我将该地址转换为类型 char 指针,然后再将其分配给我之前创建的 char 指针。现在我可以使用我的 char 数组了。完成后,我将使用free
释放那块内存,因为它不再被使用。
我有一个问题:我为什么不这样做char array[10];
?维基百科只有一个小句子可以回答这个问题,不幸的是我不明白这句话:
但是,数组的大小在编译时是固定的。如果希望动态分配一个类似的数组...
我大学的幻灯片同样简洁:
也可以从堆中分配内存。
什么是堆?我知道一种叫做堆的数据结构。:)
但是,我有人可以向我解释在这种情况下使用它是有意义的,malloc
而free
不是变量的常规声明,那就太好了。:)