如何从C中的char数组中释放内存

时间:2014-02-02 17:23:24

标签: c

我创建了一个像这样的char数组:

char arr[3] = "bo";

如何释放与名为“arr”的数组I关联的内存?

4 个答案:

答案 0 :(得分:54)

当函数结束时,自动释放局部变量,您不需要自己释放它们。您只释放动态分配的内存(例如使用malloc),因为它在堆上分配:

char *arr = malloc(3 * sizeof(char));
strcpy(arr, "bo");
// ...
free(arr);

有关动态内存分配的更多信息:http://en.wikipedia.org/wiki/C_dynamic_memory_allocation

答案 1 :(得分:12)

你根本不会放任何东西。由于您从未动态获取任何资源,因此您无需或甚至不允许任何资源免费使用。

(与您说int n = 10;时的情况相同:您不需要手动管理动态资源。)

答案 2 :(得分:6)

arr超出范围时,与arr关联的内存将自动释放。它既可以是局部变量,也可以是静态分配的,但不是动态分配的。

您可以遵循的一条简单规则是,您必须在通过调用free()malloccalloc返回的指针上每次调用realloc

答案 3 :(得分:0)

x-api-key: "<DQDg4lEmau^9{{>!Os'mhNP"

arr将内存放入堆栈段。如果arr超出范围,它将自动免费。