块作用域中的 static 关键字与使用 malloc 相比有什么优势?
例如:
功能一:
f() {
static int x = 7;
}
功能 B:
f() {
int *x = malloc(sizeof(int));
if (x != NULL)
*x = 7;
}
如果我理解正确,这两个程序都会创建一个整数 7 存储在堆上。在 A 中,变量在一开始就在某个永久存储中创建,在 main 方法执行之前。在 B 中,一旦调用函数,您就在现场分配内存,然后在该指针指向的位置存储 7。在哪种情况下,您可能会使用一种方法而不是另一种方法?我知道你不能释放函数 A 中的 x,所以这不会让 B 通常更可取吗?